Merci pour tes conseils mais cette methode ne marche que pour quatre direction
ansi j'ai fait un programme en c mais j'ai pas reussi a me deplacer (en echangeant la valeur de chaque case parcouru de 0->2)
je voulaisse mon prog <code>
#include<stdio.h>
#define H 8
#define B 4
#define D 1
#define G 6
#define HD 1
#define HG 7
#define BD 3
#define BG 5
struct matrice{
int nlig;
int ncol;
char ** donnees;
};
int Test_Voisine_Libre();
int Test_Voisine_Libre(){
struct matrice m;
int i;int j; int dir;
m.donnees[i][j];
int k;
if(m.donnees[i-1][j-1]=0){
return 7;
}
else{
return k;
}
if(m.donnees[i-1][j]=0){
return 8;
}
else {
return k;
}
if(m.donnees[i-1][j+1]=0){
return 1;
}
else{
return k;
}
if(m.donnees[i][j-1]=0){
return 6;
}
else {return k;
}
if(m.donnees[i][j+1]=0){
return 2;}
else {return k;
}
if(m.donnees[i+1][j-1]=0){
return 5;
}
else {
return k;
}
if(m.donnees[i+1][j]=0){
return 4;
}
if(m.donnees[i+1][j+1]=0){
return 3;}
else {
return k;
}
}
int chois_voisine(struct matrice m,int i,int j);
int chois_voisine(struct matrice m,int i,int j){
int dir;
m.donnees [i][j];
int l;
for(l=1;l<9;l++){
if(l=Test_Voisine_Libre()){
break;
dir=l;}
else {printf("erreur de parcour");
}
}
return dir;
}
void avance(int dir,int i,int j,struct matrice m){
if ( dir == H )
{
i --;
}
if(dir==D)
{
j++;
}
if(dir==HD)
{
i --,j++;
}
if(dir==HG)
{
i--,j--;
}
if(dir==B)
{
i++;
}
if(dir==G)
{
j--;
}
if(dir==BG)
{
i++,j--;
}
if(dir==BD)
{
i++,j++;
}
}
/* fonction echange permet d'echanger les valeurs des cases parcouru*/
int echange(strct matrice m){
m.donnees[i][j];
for(c=0;c<m.nlig*m.col;i++) {
tab[c] = c;
}