Advertisement
Essam_khames

Untitled

Dec 8th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define ROWS 8
  5. #define COLUMNS 8
  6. #define PIECES 16
  7. char nameofpiece;
  8. char domain[ROWS][COLUMNS];
  9. int occupied[ROWS][COLUMNS];
  10. char killed1[PIECES];
  11. char killed2[PIECES];
  12. int number_killed1=0;
  13. int number_killed2=0;
  14. int turn=1;
  15. int winner=0,draw=0;
  16. char letter[8]={'A','B','C','D','E','F','G','H'};
  17. int number[8]={1,2,3,4,5,6,7,8};
  18. void set_game(void);
  19. void print_board(void);
  20. void blackandwhite(int i,int j);
  21. void movement(void);
  22. void move_piece (char a,int i1, int j1,int i2,int j2);
  23.  
  24.  
  25. typedef struct {
  26. int domain1[ROWS][COLUMNS];
  27. int domain2[ROWS][COLUMNS];
  28. char eaten[PIECES*2];}steps;
  29.  
  30. void save_step(void);
  31.  
  32. int main()
  33. {
  34. set_game();
  35. do
  36. {
  37. print_board();
  38. movement();
  39. }while(winner==0 && draw==0);
  40.  
  41.  
  42.  
  43.  
  44.  
  45. return 0;
  46. }
  47. void movement(void)
  48. {
  49.  
  50. char i1c,j1c,i2c,j2c,promotion;
  51. int i1,j1,i2,j2;
  52. AGAIN :
  53. printf("\n");
  54. printf("Enter player %d move : ",turn);
  55. scanf(" %1c%1c%1c%1c",&j1c,&i1c,&j2c,&i2c);
  56. switch(j1c)
  57. {
  58. case 'A' : j1=0; break;
  59. case 'B' : j1=1; break;
  60. case 'C' : j1=2; break;
  61. case 'D' : j1=3; break;
  62. case 'E' : j1=4; break;
  63. case 'F' : j1=5; break;
  64. case 'G' : j1=6; break;
  65. case 'H' : j1=7; break;
  66. default : printf("Column intial is wrong! \nplease re-enter your move");
  67. goto AGAIN; break;
  68. }
  69. switch(j2c)
  70. {
  71. case 'A' : j2=0; break;
  72. case 'B' : j2=1; break;
  73. case 'C' : j2=2; break;
  74. case 'D' : j2=3; break;
  75. case 'E' : j2=4; break;
  76. case 'F' : j2=5; break;
  77. case 'G' : j2=6; break;
  78. case 'H' : j2=7; break;
  79. default : printf("Column final is wrong! \nplease re-enter your move");
  80. goto AGAIN; break;
  81. }
  82. switch(i1c)
  83. {
  84. case '8' : i1=0; break;
  85. case '7' : i1=1; break;
  86. case '6' : i1=2; break;
  87. case '5' : i1=3; break;
  88. case '4' : i1=4; break;
  89. case '3' : i1=5; break;
  90. case '2' : i1=6; break;
  91. case '1' : i1=7; break;
  92. default : printf("row initial is wrong! \nplease re-enter your move");
  93. goto AGAIN; break;
  94. }
  95. switch(i2c)
  96. {
  97. case '8' : i2=0; break;
  98. case '7' : i2=1; break;
  99. case '6' : i2=2; break;
  100. case '5' : i2=3; break;
  101. case '4' : i2=4; break;
  102. case '3' : i2=5; break;
  103. case '2' : i2=6; break;
  104. case '1' : i2=7; break;
  105. default : printf("row final is wrong! \nplease re-enter your move");
  106. goto AGAIN; break;
  107. }
  108.  
  109. if(occupied[i1][j1]==0)
  110. {
  111. printf("nothing to move from the initial position.\nplease re-enter your move.");
  112. goto AGAIN;
  113. }
  114. else
  115. {
  116. if (turn==1)
  117. {
  118. if(islower(domain[i1][j1]))
  119. goto CONT;
  120. else
  121. {
  122. printf("You can't move the other player's piece.\nplease re-enter your move");
  123. goto AGAIN;
  124. }
  125. }
  126. if (turn==2)
  127. {
  128. if(isupper(domain[i1][j1]))
  129. goto CONT;
  130. else
  131. {
  132. printf("You can't move the other player's piece.\n please re-enter your move");
  133. goto AGAIN;
  134. }
  135. }
  136. }
  137. move_piece(domain[i1][j1],i1,j2,turn);
  138. CONT :
  139.  
  140.  
  141. if(turn==1)
  142. turn=2;
  143. else
  144. turn=1;
  145. }
  146. void set_game(void)
  147. {
  148. /*filling the 1st , 2nd , 7th and 8th rows*/
  149. int i,j;
  150. for(i=0; i<2; i++)
  151. {
  152. for(j=0;j<COLUMNS;j++)
  153. {
  154. occupied[i][j]=1;
  155. }
  156. }
  157. for(i=6; i<8; i++)
  158. {
  159. for(j=0;j<COLUMNS;j++)
  160. {
  161. occupied[i][j]=1;
  162. }
  163. }
  164.  
  165. /* setting pawns on board*/
  166.  
  167. for(j=0; j<COLUMNS; j++)
  168. {
  169. domain[1][j]='p';
  170. domain[6][j]='P';
  171. }
  172. /*eltabya*/
  173. domain[0][0]=domain[0][7]='r';
  174. domain[7][0]=domain[7][7]='R';
  175. /*el7osan*/
  176. domain[0][1]=domain[0][6]='n';
  177. domain[7][1]=domain[7][6]='N';
  178. /*elephant*/https://pastebin.com/C1WetAUi
  179. domain[0][2]=domain[0][5]='b';
  180. domain[7][2]=domain[7][5]='B';
  181. /*Queen*/
  182. domain[0][3]='q';
  183. domain[7][3]='Q';
  184. /*king*/
  185. domain[0][4]='k';
  186. domain[7][4]='K';
  187. for(i=2; i<6;i++)
  188. {
  189. for(j=0;j<COLUMNS;j++)
  190. {
  191. occupied[i][j]=0;
  192. if((i+j)%2==0)
  193. {
  194. domain[i][j]='.';
  195. }else{
  196. domain[i][j]='-';
  197. }
  198. }
  199. }
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. }
  208. void print_board(void)
  209. {
  210. int i,j,k,c;
  211. c=0;
  212. int n=33;
  213. printf(" ");
  214. for(k=0; k<8;k++)
  215. printf(" %c",letter[k]);
  216. printf("\n");
  217. printf(" ");
  218. for(k=0; k<n;k++){
  219. printf("-");
  220. if(k==n-1)
  221. printf("\n");
  222. }
  223. for(i=0;i<ROWS;i++)
  224. {
  225. for(j=0; j<COLUMNS;j++)
  226. {
  227. if(j==0)
  228. {
  229. printf(" %d | %c |",number[7-i],domain[i][j]);
  230.  
  231. }
  232. else if (j==7)
  233. {
  234. printf(" %c | %d",domain[i][j],number[7-i]);
  235. }
  236. else
  237. {
  238. printf(" %c |",domain[i][j]);
  239. }
  240. if(j==7 && i==4)
  241. printf(" Killed Player 1 : ");
  242. while(c<number_killed1)
  243. {
  244. printf("%c,",killed1[c]);
  245. c++;
  246. if(c==8)
  247. printf("\n");
  248. }
  249. c=0;
  250. if(j==7 && i==5)
  251. printf(" Killed Player 2 :");
  252. while(c<number_killed2)
  253. {
  254. printf("%c,",killed2[c]);
  255. c++;
  256. if(c==8)
  257. printf("\n");
  258. }
  259. if(j==COLUMNS-1)
  260. {
  261.  
  262.  
  263. printf("\n");
  264. printf(" ");
  265. for(k=0; k<n;k++){
  266. printf("-");
  267. if(k==n-1)
  268. printf("\n");
  269. }
  270.  
  271. }
  272.  
  273.  
  274.  
  275. }
  276. }
  277. printf(" ");
  278.  
  279. for(k=0; k<8;k++)
  280. printf(" %c",letter[k]);
  281.  
  282.  
  283.  
  284. }
  285. void blackandwhite(int i,int j)
  286. {
  287.  
  288. if(occupied[i][j]==0)
  289. {
  290. if((i+j)%2==0)
  291. domain[i][j]='-';
  292. else
  293. domain[i][j]='.';
  294. }
  295.  
  296.  
  297. }
  298. void move_piece(char a,int i1 , int j1,int i2, int j2,int turn){
  299. if(turn==0){
  300. if(a=='p'){
  301. if(i1==1){
  302. if(i2-i1==1||i2-i1=2&&j1==j2&& occupied[i2][j2]){
  303. domain[i2][j2]=domain[i1][j1];
  304. occupied[i1][j1]=0;
  305. occupied[i2][j2]=1;
  306. }
  307. else{
  308. goto
  309. }
  310.  
  311. }
  312. }
  313.  
  314.  
  315. }
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement