home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
108.lha
/
Labyrinthe.doc
< prev
next >
Wrap
Text File
|
1988-03-02
|
3KB
|
84 lines
/************************************************************************
**************************************************************************
** **
** Labyrinthe.doc **
** -------------- **
** **
** Auteur : Eric Le Saux **
** **
** Club Amiga Montreal (CAM) **
** C.P. 195 STATION "N" **
** Montreal (Quebec) **
** H2X 3M2, CANADA **
** **
** Date : 7 mars 1988 **
** **
** Statut : DOMAINE PUBLIC - Distribution non-commerciale seulement **
** PUBLIC DOMAIN - Freely redistributable **
** **
**************************************************************************
************************************************************************/
Objectif
--------
Generer des labyrinthes possedant la propriete suivante : entre
deux points quelconques du labyrinthe, il existe toujours un seul et
unique chemin (pensez-y bien, ca a de nombreux corollaires).
Methode de generation
---------------------
Le labyrinthe est genere recursivement par la fonction Laby ().
Le principe est le suivant : soit une surface a transformer en
labyrinthe. Si on peut la diviser en quatre, on envoie chacune des
sous-partie subir le meme traitement, sinon on trace un corridor.
Une fois les quatre sous-parties generees, on les relient par trois
passages, places au hasard.
Est-ce assez simple ?
Utilisation
-----------
Le programme n'accepte aucun argument. Ce qui justifie l'elimination
des fonctions _cli_parse() et _wb_parse().
Une fenetre va s'ouvrir sur le Workbench. Elle propose 4 resolutions
et 2 actions.
Le bouton de menus sert a mettre le labyrinthe en premier plan et a
faire apparaitre/disparaitre la barre de l'ecran.
En 320x200, il y a 16000 'carrefours',
320x400 et 640x200 il y en a 32000 et en
640x400, il y en a 64000.
Compilation
-----------
Ce programme a ete compile avec Manx 3.4a.
1> cc Labyrinthe.c
1> ln Labyrinthe.o -lc
Pour que le programme fonctionne correctement, il faut faire la
correction suivante dans le fichier <exec/types.h> :
#define TRUE 1 et non #define TRUE 1L
#define FALSE 0 et non #define FALSE 0L
Explication : le type BOOL est un short. Quand on passe comme
parametre a une fonction la constante de type LONG, elle prend 32 bits
sur le stack au lieu de 16. Maintenant, si vous appelez une fonction du
systeme sans l'option de compilation +L, vous devrez convertir vos
arguments en LONG.
Si ce n'est pas tres clair, vous pouvez toujours poser des questions
a l'auteur au cours des reunions du Club Amiga Montreal.