Path finding

Fermé
Croco - Modifié par Whismeril le 26/10/2015 à 22:38
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 oct. 2015 à 17:54
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 oct. 2015 à 22:03
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
bonjour, les for ne sont qu'une erreur de recopie !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 oct. 2015 à 17:54
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