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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| description grille
maxligne
maxcol
description d'une case
numligne,
numcol
visitee
marquee
variables globales utilisées
direction (4 valeurs droite, gauche, haut bas)
numligne (varie entre 1 et maxligne)
numcol (varie entre 1 et maxcol)
variables locales à la procédure principale
flagecrire : booléen, vrai on maruqe faux on ne marque pas, change à chaque étape
debut
flagecrire <- vrai
numligne <- 1
numcol <- 1
direction <- droite
faire
si flagecrire alors
debut
marquer la case
fin
flagecrire <- non gflagecrire
tant que avancerdunecase est vrai
fin
// c'est la fonction avancer d'une case qui fait tout
// elle regarde suivant la direction si on peut avancer
// et si on ne peut pas, elle change la direction
// au bout de 4 essai, on revient au point de départ, donc si on y arrive c'est qu'on ne peut plus bouger, le parcours est termine
fonction avancerdunecase
retourn vrai/faux
debut
// on effectue au maximum 4 tests puisqu'il y a 4 directions
si testecaselibre(numligne, numcol, direction) = faux alors
debut
direction <- directionsuivante(direction)
si testecaselibre(numligne, numcol, direction) = faux alors
debut
direction <- directionsuivante(direction)
si testecaselibre(numligne, numcol, direction) = faux alors
debut
direction <- directionsuivante(direction)
si testecaselibre(numligne, numcol, direction) = faux alors
retourner faux
fin
fin
fin
marquerla case numligne, numcol comme visitee
retourner vrai
fin
fonction directionsuivante
argument dir direction
retour direction
debut
si direction = droite alors
retourner bas
si direction = bas alors
retourner gauche
si direction = gauche alors
retourner haut
si direction = haut alors
retourner droite
fin
// test si la case proche suivant la direction indiquée est visitable
// (dans la grille et non visitée)
// Si elle l'est les coordonnées de la case sont modifiées (influence du C)
fonction testecaselibre
arguments modifiés numeroligne, numerocolonne,
argument non modifie direction
retourne vrai/faux
debut
si direction = droite alors
si numerocolonne < maxcol et si la case située en numeroligne, numerocolonne+1 n'a pas été visitée
debut
numerocolonne <- numerocolonne + 1
retourner vrai
fin
sinon
retourner faux
si direction = bas alors
si numeroligne < maxlig - 1 et si la cas située en en numeroligne + 1, numerocolonne n'a pas été visitée
debut
numeroligne <- numeroligne + 1
retourner vrai
fin
sinon
retourner faux
si direction = gauche alors
si maxcol > 1 et si la cas située en en numeroligne, numerocolonne -1 n'a pas été visitée
debut
numerocolonne <- numerocolonne - 1
retourner vrai
fin
sinon
retourner faux
si direction = hautalors
si maxlig > 1 et si la cas située en en numeroligne-1, numerocolonne n'a pas été visitée
debut
numeroligne <- numeroligne - 1
retourner vrai
fin
sinon
retourner faux
fin |