Bonjour

J'ai commencé un programme sensé générer un labrinthe aléatoirement. Pour faire simple, je stocke tout dans un tableau de dimension N*P, un mur étant représenté par un -1 et un espace par 0.
la n° case du chemin allant du début à la fin a pour coordonnées {chx[n] , chy[n]}

Quand je compile ça :

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
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
 
#include <stdio.h>
#include <stdlib.h>
 
/* Dimensions du labyrinthe */
#define N 15
#define P 45
#define DIM N*P
 
/* void d'affichage du labyrinthe */
void disp(int grid[N][P])
{
	int i , j;
	printf("\n");
	for(i = 0 ; i < N ; i++)
	{
		for(j = 0 ; j < P ; j++)
		{
/* -1 = un mur, 0 = pas de mur */
 
			printf("%d" , -grid[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}
 
int main(int argc, char *argv[])
{
	int grid[N][P] , i = 0 , j = 0 , chx[DIM] , chy[DIM] , n = 0 , ch , dx[4] = {2,0,-2,0} , dy[4] = {0,-2,0,2} , x = 0 , y = 0;
	srand(time(NULL));
/* remplir le tableau grid de 0 et remplir le tour du tableau grid de -1 (= murs) */
	for(i = 0 ; i < N ; i++)
	{
	for(j = 0 ; j < P ; j++)
	{
		if(i == 0 || j == 0 || i == N-1 || j == P-1)
			grid[i][j] = -1;
		else
			grid[i][j] = 0;
	}
	}
/* les listes chx et chy contiennent les coordonnées, dans l'ordre, des cases composant le chemin du début (en haut
 * à gauche) à la fin (en bas à droite) du labyrinthe */
	chx[0] = 1;
	chy[0] = 1;
/*
			    1
			    ^
déplacements :		2  < >  0
			    v
			    3
 
n est le numéro de la case considérée dans le chemin allant du début à la fin de labyrinthe
*/
 
/* construction du chemin à suivre pour aller du début à la fin */
	while(chx[n] != N-2 && chy[n] != P-2)
	{
		x = chx[n];
		y = chy[n];
		n++;
		ch = rand() % 4;
		printf("choix : %d\n",ch);
/* Conditions pour que le choix (aléatoire) de la direction à prendre pour la case suivante soit valide : */
		while(x + dx[ch] < 1 
			|| x + dx[ch] > P-2 
			|| y + dy[ch] < 1 || y + dy > N-2 
			|| (x == 1
				 && dy[ch] == 1) 
			|| (x == N-2
				 && dy[ch] == 1) 
			|| (y == 1
				 && dx[ch] == -1) 
			|| (y == P-2
				 && dx[ch] == -1) 
			|| grid[  y + dy[ch]  ][  x + dx[ch]  ] == -2)
		{
			ch = rand() % 4;
			printf("choix : %d\n",ch);
		}
		chx[n] += dx[ch];
		chy[n] += dy[ch];
		grid[chy[n]][chx[n]] = -2;
	}
	for(i = 0 ; i < N ; i++)
	{
 
	}
	return 0;
}
avec gcc (je suis sous Fedora 8 x86_64), j'obtiens ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
gene3.c: In function ‘main’:
gene3.c:26: attention : implicit declaration of function ‘time’
gene3.c:49: attention : comparaison entre un pointeur et un entier
gene3.c:57: erreur: stray ‘\302’ in program
gene3.c:57: erreur: stray ‘\240’ in program