1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
/* @in: la case de destination
la couleur de la piece qui veut y aller
@out: 0 si elle ne peut pas, 1 si la case est libre 2 si on prend une piece
*/
int CanGoTo(Cases dest,couleur coul)
{
/* si la case est libre, il n'y a pas de problème ;) */
if(dest.p==NULL)
return 1;
/* sinon, on refuse si elle est occupée par une piece de la meme couleur */
else if(dest.p->coul==coul)
return 0;
/* arrivé ici, la piece qui veut bouger en prend une autre ;) */
return 2;
}
/* utilisé sous la forme de */
switch(CanGoto(echiquier[y][x],p->coul)
{
case 2:
/* on supprime la piece adverse qui s'y trouve */
free (echiquier[y][x].piece);
/* on y met notre piece */
/* d'abord, on signale sa nouvelle position à la piece */
case 1:/*ce qui suit est commun pour 1 et 2 (==>pas de break
avant case 1 ;) )*/
p->posx=x;
p->posy=y;
echiquier[y][x]=p;
break;
case 0:/*que faire dans ce cas là ???
sans doute chercher une autre case où aller ;)*/
break;
}; |
Partager