Path finding

Croco -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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

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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
Croco
 
bonjour, les for ne sont qu'une erreur de recopie !
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0