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 :


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;
Voilà quelques question que je me pose :
- 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