Commit 0a50320e8bd1ddb84aa25d200131912f9e9d6a74

Authored by afofana
1 parent 88349bf1

4e dépôt

Showing 1 changed file with 128 additions and 9 deletions   Show diff stats
neutron.c
... ... @@ -48,6 +48,7 @@ damier init(){
48 48 return d;
49 49 }
50 50  
  51 +//fonction d'affichage d'un damier d donné
51 52 void affichage(damier d){
52 53 int i,j;
53 54 for (i=0;i<N;i++){
... ... @@ -69,6 +70,10 @@ void affichage(damier d){
69 70 }
70 71 }
71 72  
  73 +
  74 +
  75 +
  76 +
72 77 /* dir : Donnée (donne la direction voulu par le joueur)
73 78 i,j : Données,indice de ligne et de colonne du pion qu'on veut déplacer
74 79 d: D/R
... ... @@ -78,27 +83,141 @@ void dep(int i,int j,int dir,damier *d){
78 83 int temp;
79 84 i=N-i;
80 85 j=j-1;
  86 +
81 87 if (dir==1){
82   - while ((i>=0) && ((d->tab[i][j])!=empty)){
  88 + while ((i>=1) && ((d->tab[i-1][j])==empty)){
83 89 temp=d->tab[i][j];
84   - (d->tab[i][j])=(d->tab[i-2][j]);
85   - (d->tab[i-2][j])=temp;
  90 + (d->tab[i][j])=(d->tab[i-1][j]);
  91 + (d->tab[i-1][j])=temp;
86 92 i=i-1;
87 93 }
  94 +
  95 + }
  96 +
  97 + else if (dir==5){
  98 + while ((i<=3) && ((d->tab[i+1][j])==empty)){
  99 + temp=d->tab[i][j];
  100 + (d->tab[i][j])=(d->tab[i+1][j]);
  101 + (d->tab[i+1][j])=temp;
  102 + i=i+1;
  103 + }
88 104 }
89 105  
90 106  
  107 +
  108 + else if (dir==2){
  109 + while ((i>=1) && (j<=3) && ((d->tab[i-1][j+1])==empty)){
  110 + temp=d->tab[i][j];
  111 + (d->tab[i][j])=(d->tab[i-1][j+1]);
  112 + (d->tab[i-1][j+1])=temp;
  113 + i=i-1;
  114 + j=j+1;
  115 + }
  116 + }
  117 +
  118 + else if (dir==6){
  119 + while ((j>=1) && (i<=3) && ((d->tab[i+1][j-1])==empty)){
  120 + temp=d->tab[i][j];
  121 + (d->tab[i][j])=(d->tab[i+1][j-1]);
  122 + (d->tab[i+1][j-1])=temp;
  123 + i=i+1;
  124 + j=j-1;
  125 + }
  126 + }
  127 +
  128 + else if (dir==8){
  129 + while ((j>=1) && (i>=1) && ((d->tab[i-1][j-1])==empty)){
  130 + temp=d->tab[i][j];
  131 + (d->tab[i][j])=(d->tab[i-1][j-1]);
  132 + (d->tab[i-1][j-1])=temp;
  133 + i=i-1;
  134 + j=j-1;
  135 + }
  136 + }
  137 +
  138 +
  139 + else if (dir==4){
  140 + while ((j<=3) && (i<=3) && ((d->tab[i+1][j+1])==empty)){
  141 + temp=d->tab[i][j];
  142 + (d->tab[i][j])=(d->tab[i+1][j+1]);
  143 + (d->tab[i+1][j+1])=temp;
  144 + i=i+1;
  145 + j=j+1;
  146 + }
  147 + }
  148 +
  149 + else if (dir==7){
  150 + while ((j>=1) && ((d->tab[i][j-1])==empty)){
  151 + temp=d->tab[i][j];
  152 + (d->tab[i][j])=(d->tab[i][j-1]);
  153 + (d->tab[i][j-1])=temp;
  154 + j=j-1;
  155 + }
  156 + }
  157 +
  158 + else if (dir==3){
  159 + while ((j<=3) && ((d->tab[i][j+1])==empty)){
  160 + temp=d->tab[i][j];
  161 + (d->tab[i][j])=(d->tab[i][j+1]);
  162 + (d->tab[i][j+1])=temp;
  163 + j=j+1;
  164 + }
  165 + }
  166 + else { printf("Déplacement inéxistant\n"); }
  167 +
  168 +}
  169 +
  170 +// Fonction qui renvoie 0 si le déplacement n'est pas valide et 1 sinon
  171 +int valide(int i,int j,int dir,damier d){
  172 + i=N-i;
  173 + j=j-1;
  174 +
  175 + int valide;
  176 + valide=1;
  177 +
  178 + if(dir==8 && (d.tab[i-1][j-1]!=empty) && i==0 && j==0){
  179 + valide=0;
  180 + }
  181 +
  182 + else if(dir==1 && i==0 && d.tab[i-1][j]!=empty){ valide=0;}
  183 + else if(dir==2 && j==4 && i==0 && d.tab[i-1][j+1]!=empty){ valide=0;}
  184 + else if(dir==3 && j==4 && d.tab[i][j+1]!=empty ){ valide=0;}
  185 + else if(dir==4 && i==4 && j==4 && d.tab[i+1][j+1]!=empty){ valide=0;}
  186 + else if(dir==5 && i==4 && d.tab[i+1][j]!=empty){ valide=0;}
  187 + else if(dir==6 && i==4 && j==0 && d.tab[i+1][j-1]!=empty){ valide=0;}
  188 + else if(dir==7 && j==0 && d.tab[i][j-1]!=empty){ valide=0;}
  189 + return valide;
91 190 }
92 191  
  192 +
93 193  
94 194 int main(){
  195 + int i; //indice de ligne
  196 + int j; //indice de colonne
  197 + int dir; //indice de déplacement
  198 + damier d;
  199 + d=init();
  200 + affichage(d);
  201 + printf("\n\n");
  202 +
  203 + printf("Saisir l'indice de ligne et de colonne\n");
  204 + scanf("%d%d",&i,&j);
  205 +
  206 + printf("Saisir le déplacement souhaité\n");
  207 + scanf("%d",&dir);
  208 + printf("%d",dir);
  209 +
  210 + //On redemande une autre direction tant que la direction ne peut pas être faite
  211 + while (valide(i,j,dir,d)==0){
  212 + printf("saisir un autre déplacement valide\n");
  213 + scanf("%d",&dir);
  214 + printf("%d",dir);
  215 + }
  216 +
  217 + dep(i, j, dir, &d);
95 218  
96   - damier d;
97   - d=init();
98   - affichage(d);
99   - printf("\n\n");
100   - dep(1,1,1,&d);
101   - affichage(d);
  219 + affichage(d);
  220 +
102 221 return 0;
103 222 }
104 223  
... ...