Tester l'algorithme :

(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)

Résultats :

Code de l'algorithme :
1     VARIABLES
2       i EST_DU_TYPE NOMBRE
3       lg EST_DU_TYPE NOMBRE
4       a EST_DU_TYPE NOMBRE
5       b EST_DU_TYPE NOMBRE
6       L EST_DU_TYPE LISTE
7       j EST_DU_TYPE NOMBRE
8       x EST_DU_TYPE NOMBRE
9       y EST_DU_TYPE NOMBRE
10      yoshi EST_DU_TYPE NOMBRE
11      v EST_DU_TYPE NOMBRE
12      w EST_DU_TYPE NOMBRE
13      n EST_DU_TYPE NOMBRE
14      m EST_DU_TYPE NOMBRE
15      k EST_DU_TYPE NOMBRE
16    DEBUT_ALGORITHME
17      LIRE n
18      LIRE m
19      POUR w ALLANT_DE 1 A m
20        DEBUT_POUR
21        POUR v ALLANT_DE 1 A n
22          DEBUT_POUR
23          L[(w-1)*3*n+1+3*(v-1)] PREND_LA_VALEUR v
24          L[(w-1)*3*n+2+3*(v-1)] PREND_LA_VALEUR w
25          L[(w-1)*3*n+3+3*(v-1)] PREND_LA_VALEUR 1
26          FIN_POUR
27        FIN_POUR
28      POUR k ALLANT_DE 1 A 3*n*m
29        DEBUT_POUR
30        AFFICHER L[k]
31        FIN_POUR
32      yoshi PREND_LA_VALEUR 1
33      POUR j ALLANT_DE 1 A n*m
34        DEBUT_POUR
35        SI ((L[3*(j-1)+3])%2==1) ALORS
36          DEBUT_SI
37          a PREND_LA_VALEUR L[3*(j-1)+1]
38          b PREND_LA_VALEUR L[3*(j-1)+2]
39          TRACER_SEGMENT (a-1/2,b-1/2)->(a+1/2,b-1/2)
40          TRACER_SEGMENT (a-1/2,b+1/2)->(a-1/2,b-1/2)
41          TRACER_SEGMENT (a+1/2,b-1/2)->(a+1/2,b+1/2)
42          TRACER_SEGMENT (a-1/2,b+1/2)->(a+1/2,b+1/2)
43          TRACER_POINT (a,b)
44          FIN_SI
45        FIN_POUR
46      PAUSE
47      yoshi PREND_LA_VALEUR 1
48      TANT_QUE (L[3]==1) FAIRE
49        DEBUT_TANT_QUE
50        SI (yoshi%2==1) ALORS
51          DEBUT_SI
52          AFFICHER "Joueur 1"
53          FIN_SI
54        SI (yoshi%2==0) ALORS
55          DEBUT_SI
56          AFFICHER "Joueur 2"
57          FIN_SI
58        AFFICHER "Rentrez les coordonnée de la case"
59        LIRE x
60        LIRE y
61        SI (L[3*n*(y-1)+3*x]==1) ALORS
62          DEBUT_SI
63          POUR j ALLANT_DE 1 A n*m
64            DEBUT_POUR
65            SI ((L[3*(j-1)+1])>=x ET (L[3*(j-1)+2])>=y) ALORS
66              DEBUT_SI
67              L[3*(j-1)+3] PREND_LA_VALEUR 0
68              FIN_SI
69            FIN_POUR
70          POUR j ALLANT_DE 1 A n*m
71            DEBUT_POUR
72            SI ((L[3*(j-1)+3])%2==0) ALORS
73              DEBUT_SI
74              a PREND_LA_VALEUR L[3*(j-1)+1]
75              b PREND_LA_VALEUR L[3*(j-1)+2]
76              TRACER_SEGMENT (a-1/2,b-1/2)->(a+1/2,b-1/2)
77              TRACER_SEGMENT (a-1/2,b+1/2)->(a-1/2,b-1/2)
78              TRACER_SEGMENT (a+1/2,b-1/2)->(a+1/2,b+1/2)
79              TRACER_SEGMENT (a-1/2,b+1/2)->(a+1/2,b+1/2)
80              TRACER_SEGMENT (a-1/2,b-1/2)->(a+1/2,b+1/2)
81              TRACER_SEGMENT (a-1/2,b+1/2)->(a+1/2,b-1/2)
82              TRACER_POINT (a,b)
83              FIN_SI
84            FIN_POUR
85          yoshi PREND_LA_VALEUR (yoshi+1)%2
86          FIN_SI
87          SINON
88            DEBUT_SINON
89            AFFICHER "Rejouez"
90            FIN_SINON
91        FIN_TANT_QUE
92      AFFICHER " Game Over !"
93      AFFICHER "Victoire du "
94      SI (yoshi%2==1) ALORS
95        DEBUT_SI
96        AFFICHER "joueur 1"
97        FIN_SI
98        SINON
99          DEBUT_SINON
100         AFFICHER "joueur 2"
101         FIN_SINON
102   FIN_ALGORITHME