Bonjour !
Dans le cadre du défi Pascal j'ai écrit un petit programme qui génère un labyrinthe et cherche un chemin d'un point à un autre. La recherche progresse par récursion. A l'entrée de la procédure je dessine un petit carré à la position courante, et à la sortie je l'efface, sauf si le point d'arrivée est atteint, auquel cas le programme s'arrête et laisse voir le chemin parcouru.
Mais de cette façon on ne voit pas les évolutions du chemin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 procedure tDemo.ChercheCentre(aL: tLabyr; aX, aY: integer); var i, dX, dY, lX, lY: integer; arret: boolean; begin if (aX<1) or (aX>19) or (aY<1) or (aY>19) then Exit; Carre(aX, aY, c1, c2); fil[aX, aY] := TRUE; if aX * aY = 100 then trouve := TRUE; for i := 0 to 3 do begin lX := aX + croix[i,0]; lY := aY + croix[i,1]; arret := fil[lX, lY] or (aL[lX div 3, lY div 3][lX mod 3, lY mod 3] = 1) or trouve; if not arret then ChercheCentre(aL, lX, lY); end; if not(trouve or (aX*aY = 1)) then Carre(aX, aY, Asparagus, Asparagus); if not trouve then fil[aX, aY] := FALSE; end;
J'ai écrit le même programme pour FreePascal avec l'unité WinGraph : il m'a suffi de mettre un Sleep() après le dessin du petit carré pour obtenir l'effet désiré (voir pièce jointe).
Mais pour une animation Flash ça ne peut pas convenir, n'est-ce pas ? Comment vous y prendriez-vous pour faire une chose de ce genre avec FlashPascal ?
Partager