6Fermer8
xantaresLe 09/06/2005 à 22:43
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);
		}
	}		
}