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
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