Skip to content
Extraits de code Groupes Projets
Valider f3cd7fc2 rédigé par Loïc DUBARD's avatar Loïc DUBARD :speech_balloon:
Parcourir les fichiers

sauter par-dessus des pièces est maintenant impossible

parent efb1f228
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -59,16 +59,16 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int ...@@ -59,16 +59,16 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int
valide=roi(i_src,j_src,*i_dest,*j_dest); valide=roi(i_src,j_src,*i_dest,*j_dest);
break; break;
case 'D' : case 'D' :
valide=dames(i_src,j_src,*i_dest,*j_dest); valide=dames(tableau,i_src,j_src,*i_dest,*j_dest);
break; break;
case 'T' : case 'T' :
valide=tours(i_src,j_src,*i_dest,*j_dest); valide=tours(tableau,i_src,j_src,*i_dest,*j_dest);
break; break;
case 'F' : case 'F' :
valide=fous(i_src,j_src,*i_dest,*j_dest); valide=fous(tableau,i_src,j_src,*i_dest,*j_dest);
break; break;
case 'C' : case 'C' :
valide=cavaliers(i_src,j_src,*i_dest,*j_dest); valide=cavaliers(tableau,i_src,j_src,*i_dest,*j_dest);
break; break;
default : default :
valide=0; valide=0;
...@@ -101,17 +101,22 @@ int pions(pile **tableau,int i_src,int j_src,int i_dest,int j_dest,int tour) ...@@ -101,17 +101,22 @@ int pions(pile **tableau,int i_src,int j_src,int i_dest,int j_dest,int tour)
} }
if (nb_de_pion(tableau[i_dest][j_dest],"BN"[tour%2+1])==0 && i_dest==i_src+k && j_dest==j_src){ if (nb_de_pion(tableau[i_dest][j_dest],"BN"[tour%2+1])==0 && i_dest==i_src+k && j_dest==j_src){
return 1; return 1;
} else if (i_dest==i_src+k && (j_dest==j_src+1 && j_dest==j_src-1)){ } else if (i_dest==i_src+k && (j_dest==j_src+1 || j_dest==j_src-1)){
return 1; return 1;
} }
return 0; return 0;
} }
int dames(int i_src,int j_src,int i_dest,int j_dest) int dames(pile ** tableau,int i_src,int j_src,int i_dest,int j_dest)
{ {
if ((j_dest==j_src && i_dest!=i_src) || (i_dest==i_src && j_dest!=j_src) || (abs(i_dest-i_src)==abs(j_dest-j_src) && i_dest!=i_src)){ if ((j_dest==j_src && i_dest!=i_src) || (i_dest==i_src && j_dest!=j_src)){
return 1; return tours(tableau,i_src,j_src,i_dest,j_dest);
}
if (abs(i_dest-i_src)==abs(j_dest-j_src) && i_dest!=i_src){
return fous(tableau,i_src,j_src,i_dest,j_dest);
} }
return 0; return 0;
} }
...@@ -125,23 +130,81 @@ int roi(int i_src,int j_src,int i_dest,int j_dest) ...@@ -125,23 +130,81 @@ int roi(int i_src,int j_src,int i_dest,int j_dest)
return 1; return 1;
return 0; return 0;
} }
int tours(int i_src,int j_src,int i_dest,int j_dest) int tours(pile **tableau,int i_src,int j_src,int i_dest,int j_dest)
{ {
if ((i_dest == i_src && j_dest!=j_src) || (j_dest ==j_src && i_dest!=i_src)){ int k;
if (j_dest==j_src && i_dest!=i_src){
for (k=1;k<abs(i_dest-i_src);k++){
if (i_dest>i_src){
if (longueur_pile(tableau[i_src+k][j_src])!=0){
return 0;
break;
}
} else {
if (longueur_pile(tableau[i_src-k][j_src])!=0){
return 0;
break;
}
}
}
return 1;
}
if (i_dest==i_src && j_dest!=j_src){
for (k=1;k<abs(j_dest-j_src);k++){
if (j_dest>j_src){
if (longueur_pile(tableau[i_src][j_src+k])!=0){
return 0;
break;
}
} else {
if (longueur_pile(tableau[i_src][j_src-k])!=0){
return 0;
break;
}
}
}
return 1; return 1;
} }
return 0; return 0;
} }
int fous(int i_src,int j_src,int i_dest, int j_dest) int fous(pile** tableau,int i_src,int j_src,int i_dest, int j_dest)
{ {
if (abs(j_dest-j_src)==abs(i_dest-i_src) && i_dest!=i_src){ int k;
if (abs(i_dest-i_src)==abs(j_dest-j_src) && i_dest!=i_src){
for (k=1;k<abs(i_dest-i_src);k++){
if (j_dest>j_src){
if (i_dest>i_src){
if (longueur_pile(tableau[i_src+k][j_src+k])!=0){
return 0;
break;
}
} else {
if (longueur_pile(tableau[i_src-k][j_src+k])!=0){
return 0;
break;
}
}
} else {
if (i_dest>i_src){
if (longueur_pile(tableau[i_src+k][j_src-k])!=0){
return 0;
break;
}
} else {
if (longueur_pile(tableau[i_src-k][j_src-k])!=0){
return 0;
break;
}
}
}
}
return 1; return 1;
} }
return 0; return 0;
} }
int cavaliers(int i_src,int j_src,int i_dest,int j_dest) int cavaliers(pile **tableau,int i_src,int j_src,int i_dest,int j_dest)
{ {
if (i_dest==i_src+2 || i_dest==i_src-2){ if (i_dest==i_src+2 || i_dest==i_src-2){
if (j_dest==j_src+1 || j_dest==j_src-1){ if (j_dest==j_src+1 || j_dest==j_src-1){
......
...@@ -44,28 +44,28 @@ int roi(int i_src,int j_src,int i_dest,int j_dest); ...@@ -44,28 +44,28 @@ int roi(int i_src,int j_src,int i_dest,int j_dest);
* @assign * @assign
* @ensure : verifie que le déplacement est valide pour une dame * @ensure : verifie que le déplacement est valide pour une dame
*/ */
int dames(int i_src,int j_src,int i_dest,int j_dest); int dames(pile **tableau,int i_src,int j_src,int i_dest,int j_dest);
/* /*
* @require * @require
* @assign * @assign
* @ensure : verifie que le déplacement est valide pour une tour * @ensure : verifie que le déplacement est valide pour une tour
*/ */
int tours(int i_src,int j_src,int i_dest,int j_dest); int tours(pile **tableau,int i_src,int j_src,int i_dest,int j_dest);
/* /*
* @require * @require
* @assign * @assign
* @ensure : verifie que le déplacement est valide pour un fou * @ensure : verifie que le déplacement est valide pour un fou
*/ */
int fous(int i_src,int j_src,int i_dest,int j_dest); int fous(pile **tableau,int i_src,int j_src,int i_dest,int j_dest);
/* /*
* @require * @require
* @assign * @assign
* @ensure : verifie que le déplacement est valide pour un cavalier * @ensure : verifie que le déplacement est valide pour un cavalier
*/ */
int cavaliers(int i_src,int j_src,int i_dest,int j_dest); int cavaliers(pile ** tableau,int i_src,int j_src,int i_dest,int j_dest);
/* /*
* @require * @require
* @assign * @assign
......
Aucun aperçu pour ce type de fichier
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter