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

fonctions de test de deplacement de chaque pions réalisées

parent 2dc09ea4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
CC=gcc -Wall -Wextra -ansi -g -std=c99
CC=gcc -Wall -Wextra -ansi -g -lm -std=c99
stackchess : main.o tableau.o affichage.o action.o deplacement.o
cd obj && $(CC) $^ -o ../$@
......
Aucun aperçu pour ce type de fichier
......@@ -15,6 +15,7 @@ void realiser(char action,pile **tableau,int N,char *cases,int *tour)
case 'c' :
affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >");
scanf("%3s",sel);
viderbuffer();
if (sel[1] != '\0'){
strcpy(cases,sel);
}
......
......@@ -2,7 +2,15 @@
#include"tableau.h"
#include"affichage.h"
#include"couleur.h"
#include<math.h>
/*affichage.c*/
void viderbuffer()
{
char buff=getchar();
while (buff != '\n'){
buff=getchar();
}
}
void affiche_pile_a_cote(pile **tableau,char *sel,int x,int y,int N, int ligne,int nb)
{
......
......@@ -5,6 +5,13 @@
/*affichage.h*/
/*
* @require
* @assign
* @ensure : vide le buffer en input
*/
void viderbuffer();
/*
* @require
* @assign
......
......@@ -2,7 +2,8 @@
#include"affichage.h"
#include"deplacement.h"
#include<stdlib.h>
#include<math.h>
//#include<unistd.h>
/*deplacement.c*/
void deplacement(pile **tableau, int N, char *sel, int *tour)
......@@ -22,11 +23,9 @@ void deplacement(pile **tableau, int N, char *sel, int *tour)
}
} else
printf("\nDéplacement non autorisé");
char c;
printf("\n");
scanf("%1s",&c);
fflush(stdin);
//read(0,&c,1);//attend la touche entrer
getchar();
viderbuffer();
}
}
......@@ -54,7 +53,7 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int
for (i=0 ; i<nb ; i++){
switch (tmp->chaine[0]){
case 'P' :
valide=pions(i_src,j_src,*i_dest,*j_dest);
valide=pions(tableau,i_src,j_src,*i_dest,*j_dest,*tour);
break;
case 'R' :
valide=roi(i_src,j_src,*i_dest,*j_dest);
......@@ -64,10 +63,13 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int
break;
case 'T' :
valide=tours(i_src,j_src,*i_dest,*j_dest);
break;
case 'F' :
valide=fous(i_src,j_src,*i_dest,*j_dest);
break;
case 'C' :
valide=cavaliers(i_src,j_src,*i_dest,*j_dest);
break;
default :
valide=0;
}
......@@ -81,17 +83,35 @@ void case_destination(pile **tableau,int N,int i_src,int j_src, int *i_dest,int
} else {
printf("Déplacement illégal pour au moins un pion de la pile");
}
} else if (*i_dest>=0 && *i_dest<N && *j_dest>=0) {
printf("Coordonnées invalides pour la case de destination");
} else if (*j_dest<N && nb>nb_de_pion(tableau[*i_dest][*j_dest],"BN"[*tour%2+1])){
printf("Le nombre de pions à déplacer doit être strictement plus grand que le nombre de pions adverses sur la case de destination");
}
}
}
int pions(int i_src,int j_src,int i_dest,int j_dest)
int pions(pile **tableau,int i_src,int j_src,int i_dest,int j_dest,int tour)
{
int k=0;
if ("BN"[tour%2] == 'N'){
k=1;
} else {
k=-1;
}
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;
} else if (i_dest==i_src+k && (j_dest==j_src+1 && j_dest==j_src-1)){
return 1;
}
return 0;
}
int dames(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)){
return 1;
}
return 0;
}
......@@ -107,16 +127,31 @@ int roi(int i_src,int j_src,int i_dest,int j_dest)
}
int tours(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)){
return 1;
}
return 0;
}
int fous(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){
return 1;
}
return 0;
}
int cavaliers(int i_src,int j_src,int i_dest,int j_dest)
{
if (i_dest==i_src+2 || i_dest==i_src-2){
if (j_dest==j_src+1 || j_dest==j_src-1){
return 1;
}
} else if (j_dest==j_src+2 || j_dest==j_src-2){
if (i_dest==i_src+1 || i_dest==i_src-1){
return 1;
}
}
return 0;
}
......
......@@ -30,7 +30,7 @@ void case_destination(pile **tableau,int N,int i_src,int j_src,int *i_dest,int *
* @assign
* @ensure : verifie que le déplacement est valide pour un pion
*/
int pions(int i_src,int j_src,int i_dest,int j_dest);
int pions(pile **tableau, int i_src,int j_src,int i_dest,int j_dest, int tour);
/*
* @require
......
Aucun aperçu pour ce type de fichier
#include<stdio.h>
int main()
{
char *sel="a";
printf("%s",sel+1);
return 0;
}
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