Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Sam 13 Nov 2010, 9:50
Programme Labyalgo 555 Ko... par davin...
Salut à tous ! Je suis parvenus à trouver un algoritheme générant des
labyrinthes plus que corrects.
J'ai coupler se prgm à un autre afin de pouvoir se deplacer dans ceux-cis.
Le but étant de rejoindre le petit point placer de façon aléatoire dans ce
dédale de murs...
Naturellement, ils ne sont pas "parfaits" selon la définition mathématique,
néanmois j'y travail et plusieurs personnes de mon entourage se son prit au
jeu (un menbre de ma fammille programmeur chez IBM et mon prof de maths entre
autres...),j'espère bien qu'on trouvera !
:Lbl 2
:4entAléat(1,15)+2-)C
:4entAléat(1,22)+2-)D
:Pxl-On(C,D):30-)A:30-)B
:While 1
:0-)X:0-)Y
:codeTouche-)K
:If K=45:Stop
:If k=24 ou K=25 ou K=26 ou K=34:Then
:Pxl-Off(A,B):Pxl-Off(A-1,B):Pxl-Off(A+1,B):Pxl-Off(A,B-1):Pxl-Off(A,B+1)
:If K=24:-4-)Y
:If K=26:4-)Y
:If K=25:-4-)X
:If K=34:4-)X
:If Pxl-Test(A+X/2,B+Y/2)=1:Then
:A-X-)A:B-Y-)B:End
:A+X-)A:B+Y-)B
:Pxl-On(A,B):Pxl-On(A-1,B):Pxl-On(A+1,B):Pxl-On(A,B-1):Pxl-On(A,B+1)
:If A=C et B=D:Then:Disp "GAGNE !":Stop:End
:End:End
_______________________________________________
Lorsque, après avoir séléctioner NEW, le prgm à terminer de
générer le labyrinthe, vous devez appuier sur l'une des touches directionelles
pour commancer à jouer...
REPET sert à en rejouer un... (une fois l'avoir générer, et si toutes fois vous
n'ayez pas éxécuter la commande NEW ou EffDessin après celui-ci)...
* (If entAléat(0,2)=0 ou (0,1)) Plus les chances sont grandes que entAléat=0, plus le
labyrinthe sera densse en murs. Attention ! Plus de chance aussi qu'il soit faux (infaisable).
Je vous conseil donc de faire attention si vous décider de changer la denssité...
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 15 Nov 2010, 12:50
Non, tu n'est pas seul, c'est juste que c'est la période un peu creuse de l'inspiration des gens.
Perso, je boss sur des progs de cours donc pas trop le temps de tester tes programmes.
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Lun 15 Nov 2010, 20:49
moi, j'ai pas de projet en ce moment (à part apprendre l'assembleur, et j'ai la flemme),alors je teste ton programme.
je l'ai donc testé, il est très bien quoique un peu lent, mais il y a 2 choses qui pourraient être améliorées:
quand on recommence le labyrinthe, la croix de la partie précédente reste affichée, et c'est moche.
deuxio, je décris les effets de ton prog, parce que je ne suis pas sur que c'est ça qu'il est censé faire:
tout d'abord, il se trace des petits traits horizontaux sur mon écran.
ensuite, ces petits traits raccourcissent par un bout ou l'autre, sous l'action d'un pixeloff je pense.
et ensuite on joue.
pas de barres horizontales?
(je vais quand même revérifier ce que j'ai recopié histoire d'éviter le coup classique de "oups je me plains d'un truc où c'est ma faute...")
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 15 Nov 2010, 23:56
Moi ça marche bien.
J'avais surestimé ce que devait donner ce programme.
Mais c'est déjà bien.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Mer 24 Nov 2010, 10:31
Je me suis amuser à tester toutes les erreurs possible du menu
pour avoir le même message que le tien...
RÉSULTAT :C'est certainement un oublie de parenthèse dans le menu...
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 25 Nov 2010, 19:20
Ou problème de guillemets.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Ven 26 Nov 2010, 9:09
C'est super ! Enfin quelqu’un pour l'essaie !
C'est pas qu'il est génial à casser des briques mais, je suis convaincu
que si on affine un peu l’algorithme il pourrait le devenir...
Surtout qu'il n'est pas nécessaire ici d’être un gros crac en programmation,
quelques idées comme coupler plusieurs images pour donner de grands labyrinthes,
y mètre des petites bêtes qui vous courant après pour compliquer le dédale, ou
encore pouvoir déplacer un nombre limiter de murs dans un enchevêtrement de murs où des zones son inaccessibles pourrait bien le rendre très plaisant...
Envoi moi t'es idées et je mis collerait.
Au fait tu as recopier la version 1 ou 2 ?
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 26 Nov 2010, 21:21
Cela dépend de si tu démarres sur la base actuelle ou sur une base topologiquement "parfaite".
En combinant les types d'algorithmes expliqués sur wikipédia, on doit pouvoir modifier les proportions des murs, obtenir des îles, ...
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Sam 27 Nov 2010, 9:35
Moouuais...
C'est pas con du tout, je dirai même que c'est intelligent...
Par contre je vois mal comment tu compte mélanger les algorithmes ?
Je vais y réfléchir, cette page Wiki est bien faite et je suis sur quant
cherchant un peu on peut trouver d'autres algos sur le Net à traduire en basic...
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 27 Nov 2010, 17:20
Moi non plus je ne sais pas encore comment mélanger les algos
ps: Je suis accro à Link de la série "The Legend Of Zelda"
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Lun 06 Déc 2010, 10:34
Et voici comme promis la vertion 3 du Labygénérateur !
LES LABYRINTHES SONT "PARFAITS" SELON LA DEFINITION MATHEMATHIQUE !!!
Ce prgm génére des labyrinthes des plus magnifiques, le principe n'a
rien en commain avec la première version, il en crée des "parfaits"
selon la définition mathématique (aucunes zones inaccéssibles, pas "d'ilôts").
Deplus je pense que même si le prgm est un peu long à générer les labys il est
suffisament optimiser pour tourner correctement...
Vous allez en avoir plein les yeux ! J'ai réfléchis, j'ai écris, j'ai réussit !!!
Code
:Menu("LABYRINTHE","REPET",2,"NEW",1)
:Lbl 1
:AxesNaff:Zstandard:EffDessin
:RappelImage (le n° de votre image):Pause:EffDessin ----(Ligne facultative).
:
:Vertical 9.8:Vertical -9.8
:Horizontale 9.8:Horizontale -9.8
:
:{0,4,0,-4}-)L1:{4,0,-4,0}-)L2
:0-)R
:Pxl-On(5,3):Pxl-On(3,89):Pxl-On(59,5):Pxl-On(57,91)
:Lbl 0
:
:5+4entAléat(0,13)-)A
:5+4entAléat(O,21)-)B
:Pxl-on(A,B)
:
:While 1
:
:entAléat(1,4)-)L
:L1(L)-)C:L2(L)-)D
:
:If pxl-Test(A+C,B+D)=0:Then
:A+C-)A:B+D-)A
:
:For(N,0,3)
:Pxl-On(A-C/4N,B-D/4N):End
:
:Else
:If pxl-Test(A+4,B)+Pxl-Test(A-4,B)+pxl-Test(A,B+4)+pxl-Test(A,B-4)=4
:Goto 0
:End:End
______________________________________________________________________
A métre à la suite du prgm si vous souhaitez pouvoir vous déplacer
à l'intérieur (le but est d'ateindre le point se placant de façon
alétoire sur le labyrinthe).
______________________________________________________________________
:Lbl 2
:
:4entAléat(1,14)+3-)C
:4entAléat(1,21)+3-)D
:Pxl-On(C,D)
:If R=0:Then:3-)A:3-)B:End:1-)R
:
:While A(différent de)C ou B(différent de)D
:codeTouche-)K
:
:If K=45:Stop
:If K=24:-4-)Y
:If K=26:4-)Y
:If K=25:-4-)X
:If K=34:4-)X
:
:If Pxl-Test(A+X/2,B+Y/2)=0:Then
:Pxl-Off(A,B):Pxl-Off(A-1,B):Pxl-Off(A+1,B):Pxl-Off(A,B-1):Pxl-Off(A,B+1)
:A+X-)A:B+Y-)B
:Pxl-On(A,B):Pxl-On(A-1,B):Pxl-On(A+1,B):Pxl-On(A,B-1):Pxl-On(A,B+1)
:End:0-)X:0-)Y
:
:End
:
:Menu("GAGNE !","REPET",2,"QUITTER",3)
:Lbl 3:EffListe L1:EffListe L2:AxesAff:EffEcr:Stop
IMPORTANT !
Lorsque, après avoir séléctioner NEW, le prgm à terminer de
générer le labyrinthe, celui-ci ne peut malheuresement pas encore s'arreter seul
(sous paine de ralentir ce prgm déjà assez long...). Vous devez donc, une fois
que vous penser que toutes les cases ont étaient dessinées, appuyer sur "ON" et
choisir "Quitter". Puis redémarer le prgm et choisir cette fois la commande "REPET"
pour le voir réaparaître. Vous devez appuier sur l'une des touches directionelles
pour commancer à jouer...
REMARQUE:
--Une fois arriver sur le petit point, vous avez gagné, vous pouvez y
rejouer en réutilisant "REPET"
--Si un labyrinthe vous plait, pourquoi pas ne pas l'enregistrer avec la commande
"SauveImage" dans le menu Dessin de la calto. Il vous sufirat de faire un
"RappelImage" puis "REPET" dans le prgm pour y rejouer !
--"REPET" sert à en rejouer un... (une fois l'avoir générer, et si toutes fois vous
n'ayez pas éxécuter la commande NEW ou EffDessin après celui-ci)...
--"ANNUL" pour quitter pandant le jeu.