Path finding
Croco
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
je cherche a créer un fonction qui renvoie le chemin le plus court entre deux points (sur un plateau de 9x9 cases)
voici mon code
il y a pas mal d'incohérence et c'est pour cette raison que j'aurai besoin de votre aide !
je cherche a créer un fonction qui renvoie le chemin le plus court entre deux points (sur un plateau de 9x9 cases)
voici mon code
int matrice[9][9];
int i, j;
int distance = 0;
for (i=0, i<9, i++) //initialisation à 82 chemin maximum 82
for (j=0, j<9, j++)
matrice[i][j]=82; // considéré comme l'infini
Point position = recuperer_cordonnees_case (pions[idJoueur].x, pions[idJoueur].y);// position du joueur
matrice[pions[idJoueur].x][pions[idJoueur].y] = 0; //On définie la case comme occupé par le joueur
int calculer_distance(int matrice[9][9],Point position)
{
matrice[position.x][position.y] = distance+1;
Point pclic; //point 0,0 en haut à gauche
pos.x=position.x+1; //droite
pos.y=position.y;
if (peut_on_avancer(idJoueur,pos)==TRUE) //peut on avancer renvoie 1 si on peut avancer
{
if (distance < matrice[pos.x][pos.y])
{
matrice[pos.x][pos.y]=distance;
distance=calculer_distance(*matrice,pos);
}
}
pos.x=position.x-1; //gauche
pos.y=position.y;
if (peut_on_avancer(idJoueur,pos)==TRUE)
{
if (distance < matrice[pos.x][pos.y])
{
matrice[pos.x][pos.y]=distance;
distance=calculer_distance(*matrice,pos);
}
}
pos.x=position.x; //bas
pos.y=position.y-1;
if (peut_on_avancer(idJoueur,pos)==TRUE)
{
if (distance < matrice[pos.x][pos.y])
{
matrice[pos.x][pos.y]=distance;
distance=calculer_distance(*matrice,pos);
}
}
pos.x=position.x; //haut
pos.y=position.y+1;
if (peut_on_avancer(idJoueur,pos)==TRUE)
{
if (distance < matrice[pos.x][pos.y])
{
matrice[pos.x][pos.y]=distance;
distance=calculer_distance(*matrice,pos);
}
}
return distance; //distance la plus court
}
il y a pas mal d'incohérence et c'est pour cette raison que j'aurai besoin de votre aide !
| EDIT : Ajout du LANGAGE dans les balises de code.
Explications disponibles ICI Merci d'y penser dans tes prochains messages. |
1 réponse
Bonjour,
Je me suis arrêté à la 4ème ligne :
for (i=0, i<9, i++) //initialisation à 82 chemin maximum 82
Ce ne sont pas des virgules (,) mais points virgules (;) qu'il faut mettre.
Corrige tous tes for, recompile et dis-nous si tu as toujours des incohérences.
Je me suis arrêté à la 4ème ligne :
for (i=0, i<9, i++) //initialisation à 82 chemin maximum 82
Ce ne sont pas des virgules (,) mais points virgules (;) qu'il faut mettre.
Corrige tous tes for, recompile et dis-nous si tu as toujours des incohérences.
Croco
bonjour, les for ne sont qu'une erreur de recopie !
fiddy
Messages postés
11653
Statut
Contributeur
1 847
Si tu nous disais précisément quelles sont les incohérences que tu obtiens, on pourra t'aider plus facilement. D'ailleurs un code complet serait apprécié, car là il manque pas mal de chose pour avoir une vision complète : définition des structures, de certaines variables, etc.