Bonjour,
Je rencontre un problème dans mon TP.
Voilà l'énoncé :
"On veut réaliser un programme permettant à une souris S de trouver un morceau de fromage F dans un labyrinthe. La souris ne se déplace que case par case et pas en diagonale. Pour le labyrinthe :
Il s'agit d'une matrice carrée 10*10 de caractères.
' ' = espace vide
'*' = mur
'S' = point de départ
'F' = point d'arrivée.
Écrire la procédure creerLaby (var lab : labyrinthe) qui crée un labyrinthe caractère par caractère et ligne par ligne, de façon à initialiser la matrice carrée lab de type labyrinthe. On s'assurera que des murs entourent le labyrinthe, pour les cases internes, on veut 20% de murs. Le départ et l'arrivée sont placés au hasard dans les cases vides restantes."
J'ai déjà écrit :
Voilà quelques question que je me pose :
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 procedure creerLabyrinthe (var lab : labyrinthe); // NI LE DÉPART NI L'ARRIVÉE N'ONT ÉTÉ ENCORE PLACÉS var i,j,aleat : integer; begin for i := 1 to Nmax do // Mur de gauche lab[i,1] := '*'; for i := 1 to Nmax do // Mur de droite lab[i,Nmax] := '*'; for j := 2 to Nmax-1 do lab[1,j] := '*'; // Mur du haut for j := 2 to Nmax-1 do lab[Nmax,j] := '*'; // Mur du bas randomize; for i := 2 to Nmax-1 do // L'intérieur du labyrinthe, sans compter les murs for j := 2 to Nmax - 1 do // Idem begin aleat := random(5) + 1; // Nombre aléatoire entre 1 et 5 case aleat of 1 : lab[i,j] := '*' // 1 fois sur 5 il y aura un mur else lab[i,j] := ' ' // 4 fois sur 5 un vide end end end;
- J'ai facilement trouvé comment créer les murs, mais pour l'intérieur, comment faire 20% de murs ? L'intérieur du labyrinthe est une matrice 8*8 = 64 n'est pas divisible par 5 ! Du coup, j'ai fait un peu différemment dans mon code, il y a pour chaque case de l'intérieur du labyrinthe 1 chance sur 5 que ça soit un mur, mais ce n'est pas ce qui est demandé :S
- Comment ensuite placer au hasard le départ et l'arrivée dans les cases vides restantes ?
Merci d'avance de vos réponses![]()
Partager