oui j'ai galéré pas mal avec ces balises. j'ai pas l'habitude. merci
donc voila ma structure "node" passee en argument :
// structure de liens entre les points
typedef short tab[9][7][9];
// node
typedef struct
{
tab link;
short x;
short y;
short path[20];
short pathindex;
} node;
et voici ma fonction recursive :
void m68kpath(node prevnode)
{
short i, tmpx, tmpy;
for(i=1;i<=8;i++)
{
if(prevnode.link[prevnode.x][prevnode.y][i]!=1) continue;
n++;
node tmpnode=prevnode;
tmpnode.link[prevnode.x][prevnode.y][i]=2;
tmpnode.link[prevnode.x][prevnode.y][0]=1;
tmpx=prevnode.x+dir[i][0];
tmpy=prevnode.y+dir[i][1];
tmpnode.x=tmpx;
tmpnode.y=tmpy;
tmpnode.link[tmpx][tmpy][0]=1;
tmpnode.link[tmpx][tmpy][ind[prevnode.x-tmpx+1][prevnode.y-tmpy+1]]=2;
tmpnode.path[prevnode.pathindex]=i;
if(prevnode.link[tmpx][tmpy][0]==0)
{
if((tmpx*tmpx+(tmpy-3)*(tmpy-3))<(bestx*bestx+(besty-3)*(besty-3)))
{
bestx=tmpx;
besty=tmpy;
pathnode=tmpnode;
}
}
else
{
tmpnode.pathindex++;
m68kpath(tmpnode);
}
}
}