Gamme TI-82


Poster un nouveau sujet Poster une réponse
Generateur de labyrinthe
Auteur Message
Lee-korn
Invité
Posté le : Mar 30 Jan 2018, 11:22   Citer 

Salut, voici un programme de générateur aléatoire de labyrinthe: c'est un peu lent et il faut éviter de regarder la construction, au risque de se spoil ahh.gif

Code
:effDessin
:{23,15->dim([A]        //matrice
:Remplir(1,[A]
:entAléat(1,22->A
:entAléat(1,14->B
:0->[A](A,B
:EffListe L1,L2
:1->dim(L1
:1->dim(L2
:A->L1(1
:B->L2(1
:0->Xmin             //var->fenetre
:62->Ymax
:0->Ymin
:94->Xmax
:For(I,0,15
:Horizontale 4I+1
:End
:For(I,0,23
:Verticale 4I+1
:End
:Ligne(0,0,94,0,0
:Ligne(0,62,94,62,0
:Ligne(0,0,0,62,0
:Ligne(94,0,94,62,0
:{1,0,-1,1->L3
:{0,-1,0,1->L4
:1->K
:0->[A](23,1
:While k
:EffListe L5,L6
:4->dim(L5
:4->dim(L6
:0->T
:While T=0 et K
:for(I,1,4
:L1(K)+L3(I->E
:L2(K)+L4(I->F
:if E>0 et F<0 et F<16 et E<24
:then
:if [A](E,F
:then
:T+1->T
:E->L5(T
:F->L6(T
:End
:End
:End
:if T=0
:K-1->K
:End
:if K
:then
:T->dim(L5
:T->dim(L6
:entAleat(1,T->R
:if 1=L5(R)-L1(K
:Ligne(4L5(R)-3,4L6(R)-2,4L5(R)-3,4L6(R),0
:if -1=L5(R)-L1(K
:Ligne(4L1(K)-3,4L6(R)-2,4L1(K)-3,4L6(R),0
:if 1=L6(R)-L2(K
:Ligne(4L5(R)-2,4L6(R)-3,4L5(R),4L6(R)-3,0
:if -1=L6(R)-L2(K
:Ligne(4L5(R)-2,4L2(K)-3,4L5(R),4L2(K)-3,0
:K+1->K
:0->[A](L5(R),L6(R
:L5(R->L1(K
:L6(R->L2(K
:End
:End
:if entAleat(0,1
:Ligne(92,5,90,5,0
:else
:Ligne(89,4,89,2,0
:End
:Ligne(93,2,93,4,0
:EffEcr
:Disp "APPUYEZ SUR
:Pause "ENTRER
:1->A
:15->B
:A->O          //Attention a partir de maintenant à ne pas confondre O et 0
:B->P
:Pt-Aff(4A-1,4B-1,2
:0->G
:While A<24
:codeTouch(->G
:if G=26 et Pxl-Test(63-4P,4O+1
:A+1->A
:if G=24 et Pxl-Test(63-4P,4O-3
:A-1->A
:if G=25 et Pxl-Test(61-4P,4O-1
:B+1->B
:if G=34 et Pxl-Test(65-4P,4O-1
:B-1->B
:if G!=0
:then
:Pt-Naff(4O-1,4P-1,2
:Pt-Aff(4A-1,4B-1,2
:A->O
:B->P
:End
:End
:Output(4,6,"GAGNE!
:Pause
:EffEcr


si jamais quelqu'un a des ameliorations a me suggerer dans la premiere partie, ce ne serait pas de refus
si vous ne comprenez pas tout à l'algorithme, j'ai utilisé la technique de l'exploration exhaustive
https://fr.wikipedia.org/wiki/Mod%C3%A9lisation_math%C3%A9matique_d%27un_labyrinthe

  Haut de page Bas de page 
 
Ruadh



Autorisation : Membre
Nb de messages : 30
Inscrit le : Ven 06 Nov 2015, 14:08
Posté le : Jeu 01 Fév 2018, 17:45   Citer 

Bonjour !
Je te propose quelques optimisations assez simples :


Code
:EffListe L1,L2
:1->dim(L1
:1->dim(L2
:A->L1(1
:B->L2(1



devient :


Code
:{A->L1
:{B->L2





Code
:While T=0 et K



devient :


Code
:While Knon(T





Code
:if T=0
:K-1->K



devient


Code
:K-non(T->K





Code
:if G=26 et Pxl-Test(63-4P,4O+1
:A+1->A
:if G=24 et Pxl-Test(63-4P,4O-3
:A-1->A
:if G=25 et Pxl-Test(61-4P,4O-1
:B+1->B
:if G=34 et Pxl-Test(65-4P,4O-1
:B-1->B
:if G!=0



devient :


Code
:A-(24=GPxl-Test(63-4P,4O-3))+(26=GPxl-Test(63-4P,4O+1->A
:B-(34=GPxl-Test(65-4P,4O-1))+(25=GPxl-Test(61-4P,4O-1->B
:If G



Il y a certainement d'autres optimisations à faire, mais je dois avouer que j'ai un peu la flemme de chercher :p

 Adresse email Haut de page Bas de page 
 
Lee-korn



Autorisation : Membre
Nb de messages : 19
Inscrit le : Sam 16 Déc 2017, 16:13
Posté le : Jeu 01 Fév 2018, 18:55   Citer 

Merci pour ton aide, je cherchais principalement des améliorations sur le générateur, je n'ai pas trop optimisé le reste bigmouth.gif

----------------------
La meilleure façon de prédire le futur est de l'inventer
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2019 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink