From 3823fa4b6251e30d3f92da5396757c5d28065d21 Mon Sep 17 00:00:00 2001 From: aiba fofana Date: Thu, 17 Jan 2019 12:46:03 +0100 Subject: [PATCH] 5e depôt --- neutron.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 148 insertions(+), 27 deletions(-) diff --git a/neutron.c b/neutron.c index 0f36bc2..676c5b5 100644 --- a/neutron.c +++ b/neutron.c @@ -15,7 +15,7 @@ typedef struct d{ int tab[N][N]; - int indi; //indice de ligne du neutron + int indl; //indice de ligne du neutron int indc; //indice de colonne du neutron }damier; @@ -42,7 +42,7 @@ damier init(){ d.tab[2][2]=0; - d.indi=3; + d.indl=3; d.indc=3; return d; @@ -169,24 +169,130 @@ void dep(int i,int j,int dir,damier *d){ // Fonction qui renvoie 0 si le déplacement n'est pas valide et 1 sinon int valide(int i,int j,int dir,damier d){ + int valide; i=N-i; j=j-1; - int valide; + valide=1; - if(dir==8 && (d.tab[i-1][j-1]!=empty) && i==0 && j==0){ - valide=0; - } + if(dir==8 && (i==0 || j==0 || (d.tab[i-1][j-1]!=empty)) ){ + valide=0;} + else if(dir==1 && (i==0 || d.tab[i-1][j]!=empty)){ + valide=0;} + else if(dir==2 && (j==4 || i==0 || d.tab[i-1][j+1]!=empty)){ + valide=0;} + else if(dir==3 && (j==4 || d.tab[i][j+1]!=empty) ){ + valide=0;} + else if(dir==4 && (i==4 || j==4 || d.tab[i+1][j+1]!=empty)){ + valide=0;} + else if(dir==5 && (i==4 || d.tab[i+1][j]!=empty)){ + valide=0;} + else if(dir==6 && (i==4 || j==0 || d.tab[i+1][j-1]!=empty)){ + valide=0;} + else if(dir==7 && (j==0 || d.tab[i][j-1]!=empty)){ + valide=0;} + /*else if (1<=dir || dir>=8){ + valide=0;}*/ + return valide==1; +} + +// 1 si joueur est bleu et 2 si le joueur est rouge +//renvoie 0 si perd et 1 si gagne +int perd(int joueur,damier d){ + int i=d.indl; + int j=d.indc; + int c=1; + int perd=0; + + + + //Test si les pions du joueur bleu peuvent se déplacer + if(joueur==blue){ + for(i=0;iindl; + int col=d->indc; + int dir; + int v; + int i,j; + + do{ + printf("saisir un déplacement valide TOUR1\n"); + scanf("%d",&dir); + v=valide(ind,col,dir,*d); + + }while(v==0); + dep(ind,col,dir,d); + + do{ + printf("saisir un déplacement valide TOUR2\n"); + scanf("%d",&dir); + v=valide(i,j,dir,*d); + + }while(v==0); + + printf("Saisir l'indice de ligne et de colonne du pion\n"); + scanf("%d,%d",&i,&j); - else if(dir==1 && i==0 && d.tab[i-1][j]!=empty){ valide=0;} - else if(dir==2 && j==4 && i==0 && d.tab[i-1][j+1]!=empty){ valide=0;} - else if(dir==3 && j==4 && d.tab[i][j+1]!=empty ){ valide=0;} - else if(dir==4 && i==4 && j==4 && d.tab[i+1][j+1]!=empty){ valide=0;} - else if(dir==5 && i==4 && d.tab[i+1][j]!=empty){ valide=0;} - else if(dir==6 && i==4 && j==0 && d.tab[i+1][j-1]!=empty){ valide=0;} - else if(dir==7 && j==0 && d.tab[i][j-1]!=empty){ valide=0;} - return valide; + + dep(i,j,dir,d); + affichage(*d); } @@ -194,29 +300,44 @@ int valide(int i,int j,int dir,damier d){ int main(){ int i; //indice de ligne int j; //indice de colonne - int dir; //indice de déplacement + int dir;//indice de déplacement + int v; + + damier d; d=init(); affichage(d); printf("\n\n"); - printf("Saisir l'indice de ligne et de colonne\n"); - scanf("%d%d",&i,&j); - printf("Saisir le déplacement souhaité\n"); - scanf("%d",&dir); - printf("%d",dir); - - //On redemande une autre direction tant que la direction ne peut pas être faite - while (valide(i,j,dir,d)==0){ - printf("saisir un autre déplacement valide\n"); + printf("Indice de ligne et de colonne du pion\n"); + scanf("%d,%d",&i,&j); + do{ + printf("saisir un déplacement valide MAIN\n"); scanf("%d",&dir); - printf("%d",dir); - } + v=valide(i,j,dir,d); + + }while(v==0); dep(i, j, dir, &d); - affichage(d); + + + while (perd(blue,d)==1 && perd(red,d)==1){ + tour(red,&d); + affichage(d); + printf("\n\n"); + tour(blue,&d); + affichage(d); + } + + if (perd(blue,d)==0){ + printf("Joueur Bleu gagne\n"); + } + + else if (perd(red,d)==0){ + printf("Joueur Rouge gagne\n"); + } return 0; } -- libgit2 0.21.2