Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. char* board[9][9];
  6. char w_pawn='p';
  7. char w_rook='r';
  8. char w_knight='n';
  9. char w_bishop='b';
  10. char w_queen='q';
  11. char w_king='k';
  12. char b_pawn='P';
  13. char b_rook='R';
  14. char b_knight='N';
  15. char b_bishop='B';
  16. char b_queen='Q';
  17. char b_king='K';
  18. char black_block='-';
  19. char white_block='*';
  20. int a[4];
  21. int counter1=0,counter2=0;
  22. char array1 [1][16];
  23. char array2 [1][16];
  24. void initializBoard ();
  25. int check_pawn_move();
  26. char *whitelost[16];
  27. char *blacklost[16];
  28. void repkace_black_white_blocks(int i1,int j1)
  29. {
  30. if ((i1+j1)%2==0)
  31. {
  32. board[i1][j1]=&white_block;
  33. }
  34. else if ((i1+j1)%2!=0)
  35. {
  36. board[i1][j1]=&black_block;
  37. }
  38. }
  39. void chessboard(){
  40. int i,j;printf(" A B C D E F G H\n");
  41. printf(" |---------|---------|---------|---------|---------|---------|---------|---------|\n");
  42.  
  43. initializBoard ();
  44. for(i=0;i<8;i++){
  45. printf("\n%d",i+1);
  46. for(j=0;j<8;j++){
  47. if (i!=0&&i!=1&&i!=6&&i!=7){
  48. if((i+j)%2==0){
  49. board [i][j]= &white_block ;
  50. printf(" %c",*board [i][j]);
  51.  
  52. }
  53. else{
  54. board [i][j]= &black_block ;
  55. printf(" %c",*board [i][j]);
  56. }}
  57. else
  58. {
  59. printf(" %c",*board [i][j]);
  60. }
  61. }
  62. printf(" %d",i+1);
  63. printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------|\n\n");
  64.  
  65. }
  66. printf("\n A B C D E F G H\n\n\n\n\n\n");
  67.  
  68. }
  69. void initializBoard ()
  70. {
  71. board[0][0]=&w_rook;
  72. board[0][1]=&w_knight;
  73. board[0][2]=&w_bishop;
  74. board[0][3]=&w_queen;
  75. board[0][4]=&w_king;
  76. board[0][5]=&w_bishop;
  77. board[0][6]=&w_knight;
  78. board[0][7]=&w_rook;
  79.  
  80. for(int i=0;i<8;i++){
  81. for(int j=0;j<8;j++){
  82. if(i==1){
  83. board[i][j]=&w_pawn;
  84. }
  85. }
  86. }
  87.  
  88. board[7][0]=&b_rook;
  89. board[7][1]=&b_knight;
  90. board[7][2]=&b_bishop;
  91. board[7][3]=&b_queen;
  92. board[7][4]=&b_king;
  93. board[7][5]=&b_bishop;
  94. board[7][6]=&b_knight;
  95. board[7][7]=&b_rook;
  96. for(int i=0;i<8;i++){
  97. for(int j=0;j<8;j++){
  98. if(i==6){
  99. board[i][j]=&b_pawn;
  100. }
  101. }
  102. }
  103. }
  104. void print ()
  105. {
  106. printf(" A B C D E F G H\n");
  107. printf(" |---------|---------|---------|---------|---------|---------|---------|---------|\n");
  108.  
  109. for (int i=0;i<8;i++)
  110. {
  111. printf("\n%d",i+1);
  112. for (int j=0;j<8;j++)
  113. {
  114. printf(" %c",*board [i][j]);
  115. }
  116. printf(" %d",i+1);
  117. if (i==2){
  118. printf(" NO. of pieces out of player 1: %d",counter1);
  119. printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------| pieces :");
  120. for (int j =0 ; j < strlen(array1 [ 0 ]); j++) printf("%c ",array1[ 0 ][ j ]);
  121. printf("\n\n");
  122. }
  123. else if (i==3)
  124. {
  125. printf(" NO. of pieces out of player 2: %d",counter2);
  126. printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------| pieces:");
  127. for (int j =0 ; j < strlen(array2 [ 0 ]); j++) printf("%c ",array2[ 0 ][ j ]);
  128. printf("\n\n");
  129.  
  130. }
  131. else
  132. {
  133. printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------|\n\n");
  134. }
  135. }
  136. printf("\n A B C D E F G H\n\n\n\n\n\n");
  137. }
  138.  
  139. void move ()
  140. {
  141. char ch1,ch2;
  142. int n1,n2,i1,j1,i2,j2;
  143. scanf("%c %d %c %d",&ch1,&n1,&ch2,&n2);
  144. switch (ch1)
  145. {
  146. case 'A':
  147. case'a':j1=0; break;
  148. case 'B':
  149. case 'b':j1=1;break;
  150. case 'c':
  151. case 'C': j1=2; break;
  152. case 'd':
  153. case 'D': j1=3; break;
  154. case 'e':
  155. case 'E': j1=4; break;
  156. case 'f':
  157. case 'F': j1=5; break;
  158. case 'g':
  159. case 'G': j1=6; break;
  160. case 'h':
  161. case 'H': j1=7; break;
  162.  
  163. }
  164.  
  165. switch (n1)
  166. {
  167. case 1: i1=0; break;
  168. case 2: i1=1; break;
  169. case 3: i1=2; break;
  170. case 4: i1=3; break;
  171. case 5: i1=4; break;
  172. case 6: i1=5; break;
  173. case 7: i1=6; break;
  174. case 8: i1=7; break;
  175.  
  176. }
  177.  
  178. switch (ch2)
  179. {
  180. case 'A':
  181. case'a':j2=0; break;
  182. case 'B':
  183. case 'b':j2=1;break;
  184. case 'c':
  185. case 'C': j2=2; break;
  186. case 'd':
  187. case 'D': j2=3; break;
  188. case 'e':
  189. case 'E': j2=4; break;
  190. case 'f':
  191. case 'F': j2=5; break;
  192. case 'g':
  193. case 'G': j2=6; break;
  194. case 'h':
  195. case 'H': j2=7; break;
  196.  
  197. }
  198.  
  199. switch (n2)
  200. {
  201. case 1: i2=0; break;
  202. case 2: i2=1; break;
  203. case 3: i2=2; break;
  204. case 4: i2=3; break;
  205. case 5: i2=4; break;
  206. case 6: i2=5; break;
  207. case 7: i2=6; break;
  208. case 8: i2=7; break;
  209.  
  210. }
  211. a[0]=i1;
  212. a[1]=j1;
  213. a[2]=i2;
  214. a[3]=j2;
  215.  
  216. if(board[i1][j1]==&b_pawn)
  217. {
  218. char c;
  219. if ((a[2]==0)&&((board[0][a[3]]==&black_block)||(board[0][a[3]]==&white_block))) //promotion
  220. {
  221. printf("promotion to:");
  222. scanf("%c",&c);
  223. scanf("%c",&c);
  224. switch (c)
  225. {
  226. case 'Q': board[0][a[3]]=&b_queen; break;
  227. case 'B': board[0][a[3]]=&b_bishop; break;
  228. case 'R': board[0][a[3]]=&b_rook; break;
  229. case 'N': board[0][a[3]]=&b_knight; break;
  230. case 'K': board[0][a[3]]=&b_king; break;
  231. }
  232.  
  233. repkace_black_white_blocks(i1,j1);
  234. print();
  235. }
  236. else{
  237. int h=check_pawn_move();
  238. if (h==1)
  239. {
  240. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  241. {
  242. array1[0][counter1]=*board[i2][j2];
  243. counter1++;
  244. }
  245. board[i2][j2]=&b_pawn;
  246. repkace_black_white_blocks(i1,j1);
  247. print();
  248. }
  249. else if (h==0)
  250. {
  251. printf("NOT VALID \n");
  252. }
  253. }
  254. }
  255.  
  256. if(board[i1][j1]==&w_pawn){
  257. char c;
  258. if ((a[2]==7)&&((board[7][a[3]]==&black_block)||(board[7][a[3]]==&white_block))) //promotion
  259. {
  260. printf("promotion to:");
  261. scanf("%c",&c);
  262. scanf("%c",&c);
  263. switch (c)
  264. {
  265. case 'q': board[7][a[3]]=&w_queen; break;
  266. case 'b': board[7][a[3]]=&w_bishop; break;
  267. case 'r': board[7][a[3]]=&w_rook; break;
  268. case 'n': board[7][a[3]]=&w_knight; break;
  269. case 'k': board[7][a[3]]=&w_king; break;
  270. }
  271.  
  272. repkace_black_white_blocks(i1,j1);
  273. print();
  274. }
  275. else{
  276. int h=check_pawn_move();
  277. if (h==1)
  278. {
  279. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  280. {
  281. array2[0][counter2]=*board[i2][j2];
  282. counter2++;
  283. }
  284. board[i2][j2]=&w_pawn;
  285. repkace_black_white_blocks(i1,j1);
  286. print();
  287. }
  288. else if (h==0)
  289. {
  290. printf("NOT VALID \n");
  291. }
  292. }
  293. }
  294.  
  295. if(board[i1][j1]==&w_knight){
  296. int h=check_knight_move ();
  297. if (h==1)
  298. {
  299. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  300. {
  301. array2[0][counter2]=*board[i2][j2];
  302. counter2++;
  303. }
  304. board[i2][j2]=&w_knight;
  305. repkace_black_white_blocks(i1,j1);
  306. print();
  307. }
  308. else if (h==0)
  309. {
  310. printf("NOT VALID \n");
  311. }}
  312. if(board[i1][j1]==&b_knight){
  313. int h=check_knight_move ();
  314. if (h==1)
  315. {
  316. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  317. {
  318. array1[0][counter1]=*board[i2][j2];
  319. counter1++;
  320. }
  321. board[i2][j2]=&b_knight;
  322. repkace_black_white_blocks(i1,j1);
  323. print();
  324. }
  325. else if (h==0)
  326. {
  327. printf("NOT VALID \n");
  328. }}
  329.  
  330.  
  331.  
  332.  
  333. if(board[i1][j1]==&w_king){
  334. int h=check_king_move();
  335. if (h==1)
  336. {
  337. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  338. {
  339. array2[0][counter2]=*board[i2][j2];
  340. counter2++;
  341. }
  342. board[i2][j2]=&w_king;
  343. repkace_black_white_blocks(i1,j1);
  344. print();
  345. }
  346. else if (h==0)
  347. {
  348. printf("NOT VALID \n");
  349. }}
  350.  
  351. if(board[i1][j1]==&b_king){
  352. int h=check_king_move();
  353. if (h==1)
  354. {
  355. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  356. {
  357. array1[0][counter1]=*board[i2][j2];
  358. counter1++;
  359. }
  360. board[i2][j2]=&b_king;
  361. repkace_black_white_blocks(i1,j1);
  362. print();
  363. }
  364. else if (h==0)
  365. {
  366. printf("NOT VALID \n");
  367. }}
  368.  
  369. if(board[i1][j1]==&b_queen){
  370. int h=check_queen_move();
  371. if(h==1){
  372. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  373. {
  374. array1[0][counter1]=*board[i2][j2];
  375. counter1++;
  376. }
  377.  
  378. board[i2][j2]=&b_queen;
  379. repkace_black_white_blocks(i1,j1);
  380. print();
  381. }else if (h==0)
  382. {
  383. printf("NOT VALID \n");
  384. }
  385. }
  386. if(board[i1][j1]==&w_queen){
  387. int h=check_queen_move();
  388. if(h==1){
  389. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  390. {
  391. array2[0][counter2]=*board[i2][j2];
  392. counter2++;
  393. }
  394. board[i2][j2]=&w_queen;
  395. repkace_black_white_blocks(i1,j1);
  396. print();
  397. }else if (h==0)
  398. {
  399. printf("NOT VALID \n");
  400. }
  401. }
  402.  
  403.  
  404. if(board[i1][j1]==&b_rook){
  405. int h=check_rook_move();
  406. if(h==1){
  407. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  408. {
  409. array1[0][counter1]=*board[i2][j2];
  410. counter1++;
  411. }
  412. board[i2][j2]=&b_rook;
  413. repkace_black_white_blocks(i1,j1);
  414. print();
  415. }else if (h==0)
  416. {
  417. printf("NOT VALID \n");
  418. }
  419. }
  420. if(board[i1][j1]==&w_rook){
  421. int h=check_rook_move();
  422. if(h==1){
  423. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  424. {
  425. array2[0][counter2]=*board[i2][j2];
  426. counter2++;
  427. }
  428. board[i2][j2]=&w_rook;
  429. repkace_black_white_blocks(i1,j1);
  430. print();
  431. }else if (h==0)
  432. {
  433. printf("NOT VALID \n");
  434. }
  435. }
  436. if(board[i1][j1]==&b_bishop){
  437. int h=check_bishop_move();
  438. if(h==1){
  439. if (board[i2][j2]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
  440. {
  441. array1[0][counter1]=*board[i2][j2];
  442. counter1++;
  443. }
  444. board[i2][j2]=&b_bishop;
  445. repkace_black_white_blocks(i1,j1);
  446. print();
  447. }else if (h==0)
  448. {
  449. printf("NOT VALID \n");
  450. }
  451. }
  452. if(board[i1][j1]==&w_bishop){
  453. int h=check_bishop_move();
  454. if(h==1){
  455. if (board[i2][j2]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
  456. {
  457. array2[0][counter2]=*board[i2][j2];
  458. counter2++;
  459. }
  460. board[i2][j2]=&w_bishop;
  461. repkace_black_white_blocks(i1,j1);
  462. print();
  463. }else if (h==0)
  464. {
  465. printf("NOT VALID \n");
  466. }
  467. }
  468. }
  469.  
  470. int check_pawn_move(){
  471. int get;
  472. if(board[a[0]][a[1]]==&w_pawn){
  473. if(a[0]==1&&a[3]==a[1]){
  474. if((a[2]==2||a[2]==3)&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_bishop){
  475. get=1;
  476. }
  477. else{
  478. get=0;
  479. }
  480. }
  481. else{
  482. if (a[2]==a[0]+1&&(a[3]==a[1]+1||a[3]==a[1]-1)){
  483. if (board[a[2]][a[3]]==&b_pawn||board[a[2]][a[3]]==&b_rook||board[a[2]][a[3]]==&b_knight||board[a[2]][a[3]]==&b_bishop||board[a[2]][a[3]]==&b_queen)
  484. {
  485. get=1;
  486. }else
  487. {
  488. get=0;
  489. }
  490. }else if((a[0]==a[2]-1)&&a[3]==a[1])
  491. {
  492. if (board[a[2]][a[3]]== &black_block||board[a[2]][a[3]]== &white_block)
  493. {
  494. get=1;
  495. }
  496.  
  497. else
  498. {
  499. get=0;
  500. }
  501. }else
  502. {
  503. get=0;
  504. }
  505. }
  506. }
  507. if(board[a[0]][a[1]]==&b_pawn){
  508. if(a[0]==6&&a[3]==a[1]&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_bishop){
  509. if(a[2]==5||a[2]==4){
  510. get=1;
  511. }
  512. else{
  513. get=0;
  514. }}
  515.  
  516. else{
  517. if(a[2]==a[0]-1&&(a[3]==a[1]+1||a[3]==a[1]-1)){
  518. if (board[a[2]][a[3]]==&w_pawn||board[a[2]][a[3]]==&w_rook||board[a[2]][a[3]]==&w_knight||board[a[2]][a[3]]==&w_bishop||board[a[2]][a[3]]==&w_queen)
  519. {
  520. get=1;
  521. }
  522.  
  523. else
  524. {
  525. get=0;
  526. }
  527. }else if ((a[0]==a[2]+1)&&a[3]==a[1])
  528. {
  529. if (board[a[2]][a[3]]== &black_block||board[a[2]][a[3]]== &white_block)
  530. {
  531. get=1;
  532. }
  533.  
  534. else
  535. {
  536. get=0;
  537. }
  538. }else
  539. {
  540. get=0;
  541. }
  542. }
  543. }
  544. return get;
  545. }
  546.  
  547. int check_king_move()
  548. {
  549. int get;
  550. if(board[a[0]][a[1]]==&w_king)
  551. {
  552. if ((a[2]==a[0]||a[2]==a[0]+1||a[2]==a[0]-1)&&(a[1]==a[3]||a[1]==a[3]+1||a[1]==a[3]-1))
  553. {
  554. if (board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight)
  555. {
  556. get =1;
  557. }
  558. else
  559. {
  560. get=0;
  561. }
  562. }else
  563. {
  564. get=0;
  565. }
  566. }
  567. if(board[a[0]][a[1]]==&b_king)
  568. {
  569. if ((a[2]==a[0]||a[2]==a[0]+1||a[2]==a[0]-1)&&(a[1]==a[3]||a[1]==a[3]+1||a[1]==a[3]-1))
  570. {
  571. if (board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight)
  572. {
  573. get =1;
  574.  
  575. }
  576. else
  577. {
  578. get=0;
  579. }
  580. }
  581. else
  582. {
  583. get=0;
  584. }
  585. }
  586. return get;
  587. }
  588.  
  589. int check_knight_move()
  590. {int get;
  591. if(board[a[0]][a[1]]==&w_knight)
  592. {
  593. if (((a[2]==a[0]-1||a[2]==a[0]+1)&&(a[3]==a[1]-2||a[3]==a[1]+2))||((a[2]==a[0]-2||a[2]==a[0]+2)&&(a[3]==a[1]-1||a[3]==a[1]+1)))
  594. {
  595. if (board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight)
  596. {
  597. get=1;
  598. }else
  599. {
  600. get=0;
  601. }
  602. }else
  603. {
  604. get=0;
  605. }
  606. }
  607. if(board[a[0]][a[1]]==&b_knight)
  608. {
  609. if (((a[2]==a[0]-1||a[2]==a[0]+1)&&(a[3]==a[1]-2||a[3]==a[1]+2))||((a[2]==a[0]-2||a[2]==a[0]+2)&&(a[3]==a[1]-1||a[3]==a[1]+1)))
  610. {
  611. if (board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight)
  612. {
  613. get=1;
  614. }else
  615. {
  616. get=0;
  617. }
  618. }else
  619. {
  620. get=0;
  621. }
  622. }
  623. return get;
  624. }
  625.  
  626. int check_queen_move(){
  627. int check;
  628. int k=0;
  629. int get=0;
  630. if(board[a[0]][a[1]]==&b_queen){
  631. if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
  632. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  633. {
  634. if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
  635. {
  636. check=1;
  637. if (i==(fabs(a[2]-a[0])-1))
  638.  
  639. {
  640. break;
  641. }
  642. }
  643. else if ((a[2]==a[0]-1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  644. {
  645. check=1;
  646. }
  647. else
  648. {
  649. check=0;
  650. break;
  651. }
  652. }
  653. if (check==1){
  654. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  655. get=1;
  656. }else {
  657. get=0;}
  658. }else
  659. {
  660. get=0;
  661. }
  662. return get;
  663. }
  664.  
  665. if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
  666. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  667. {
  668. if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
  669. {
  670. check=1;
  671. if (i==(fabs(a[2]-a[0])-1))
  672.  
  673. {
  674. break;
  675. }
  676. }
  677. else if ((a[2]==a[0]+1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  678. {
  679. check=1;
  680. }
  681. else
  682. {
  683. check=0;
  684. break;
  685. }
  686. }
  687. if (check==1){
  688. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  689. get=1;
  690. }else {
  691. get=0;}
  692. }else
  693. {
  694. get=0;
  695. }
  696. return get;
  697. }
  698. if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
  699. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  700. {
  701. if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
  702. {
  703. check=1;
  704. if (i==(fabs(a[1]-a[3])-1))
  705.  
  706. {
  707. break;
  708. }
  709. }
  710. else if ((a[3]==a[1]+1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  711. {
  712. check=1;
  713. }
  714. else
  715. {
  716. check=0;
  717. break;
  718. }
  719. }
  720. if (check==1){
  721. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  722. get=1;
  723. }else {
  724. get=0;}
  725. }else
  726. {
  727. get=0;
  728. }
  729. return get;
  730. }
  731. if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
  732. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  733. {
  734. if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
  735. {
  736. check=1;
  737. if (i==(fabs(a[1]-a[3])-1))
  738.  
  739. {
  740. break;
  741. }
  742. }
  743. else if ((a[3]==a[1]-1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  744. {
  745. check=1;
  746. }
  747. else
  748. {
  749. check=0;
  750. break;
  751. }
  752. }
  753. if (check==1){
  754. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  755. get=1;
  756. }else {
  757. get=0;}
  758. }else
  759. {
  760. get=0;
  761. }
  762. return get;
  763. }
  764.  
  765. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  766. get=1;
  767. }else {
  768. get=0;}
  769. return get;
  770.  
  771.  
  772. }
  773.  
  774.  
  775.  
  776. if(board[a[0]][a[1]]==&w_queen){
  777.  
  778. if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
  779. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  780. {
  781. if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
  782. {
  783. check=1;
  784. if (i==(fabs(a[2]-a[0])-1))
  785.  
  786. {
  787. break;
  788. }
  789. }
  790. else if ((a[2]==a[0]-1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  791. {
  792. check=1;
  793. }
  794. else
  795. {
  796. check=0;
  797. break;
  798. }
  799. }
  800. if (check==1){
  801. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
  802. get=1;
  803. }else {
  804. get=0;}
  805. }else
  806. {
  807. get=0;
  808. }
  809. return get;
  810. }
  811.  
  812. if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
  813. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  814. {
  815. if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
  816. {
  817. check=1;
  818. if (i==(fabs(a[2]-a[0])-1))
  819.  
  820. {
  821. break;
  822. }
  823. }
  824. else if ((a[2]==a[0]+1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  825. {
  826. check=1;
  827. }
  828. else
  829. {
  830. check=0;
  831. break;
  832. }
  833. }
  834. if (check==1){
  835. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
  836. get=1;
  837. }else {
  838. get=0;}
  839. }else
  840. {
  841. get=0;
  842. }
  843. return get;
  844. }
  845. if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal right moves*/
  846. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  847. {
  848. if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
  849. {
  850. check=1;
  851. if (i==(fabs(a[1]-a[3])-1))
  852.  
  853. {
  854. break;
  855. }
  856. }
  857. else if ((a[3]==a[0]+1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  858. {
  859. check=1;
  860. }
  861. else
  862. {
  863. check=0;
  864. break;
  865. }
  866. }
  867. if (check==1){
  868. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  869. get=1;
  870. }else {
  871. get=0;}
  872. }else
  873. {
  874. get=0;
  875. }
  876. return get;
  877. }
  878. if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal left moves*/
  879. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  880. {
  881. if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
  882. {
  883. check=1;
  884. if (i==(fabs(a[1]-a[3])-1))
  885.  
  886. {
  887. break;
  888. }
  889. }
  890. else if ((a[3]==a[1]-1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  891. {
  892. check=1;
  893. }
  894. else
  895. {
  896. check=0;
  897. break;
  898. }
  899. }
  900. if (check==1){
  901. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  902. get=1;
  903. }else {
  904. get=0;}
  905. }else
  906. {
  907. get=0;
  908. }
  909. return get;
  910. }
  911.  
  912. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  913. get=1;
  914. }else {
  915. get=0;}
  916. return get;
  917.  
  918.  
  919.  
  920. }
  921. }
  922. int check_rook_move(){
  923. int check=0;
  924. int get;
  925. if (a[0]==a[2]||a[1]==a[3]){
  926. if(board[a[0]][a[1]]==&b_rook){
  927. if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
  928. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  929. {
  930. if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
  931. {
  932. check=1;
  933. if (i==(fabs(a[2]-a[0])-1))
  934.  
  935. {
  936. break;
  937. }
  938. }
  939. else if ((a[2]==a[0]-1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  940. {
  941. check=1;
  942. }
  943. else
  944. {
  945. check=0;
  946. break;
  947. }
  948. }
  949. if (check==1){
  950. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  951. get=1;
  952. }else {
  953. get=0;}
  954. }else
  955. {
  956. get=0;
  957. }
  958. return get;
  959. }
  960.  
  961. if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
  962. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  963. {
  964. if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
  965. {
  966. check=1;
  967. if (i==(fabs(a[2]-a[0])-1))
  968.  
  969. {
  970. break;
  971. }
  972. }
  973. else if ((a[2]==a[0]+1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  974. {
  975. check=1;
  976. }
  977. else
  978. {
  979. check=0;
  980. break;
  981. }
  982. }
  983. if (check==1){
  984. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  985. get=1;
  986. }else {
  987. get=0;}
  988. }else
  989. {
  990. get=0;
  991. }
  992. return get;
  993. }
  994. if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
  995. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  996. {
  997. if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
  998. {
  999. check=1;
  1000. if (i==(fabs(a[1]-a[3])-1))
  1001.  
  1002. {
  1003. break;
  1004. }
  1005. }
  1006. else if ((a[3]==a[1]+1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  1007. {
  1008. check=1;
  1009. }
  1010. else
  1011. {
  1012. check=0;
  1013. break;
  1014. }
  1015. }
  1016. if (check==1){
  1017. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1018. get=1;
  1019. }else {
  1020. get=0;}
  1021. }else
  1022. {
  1023. get=0;
  1024. }
  1025. return get;
  1026. }
  1027. if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
  1028. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  1029. {
  1030. if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
  1031. {
  1032. check=1;
  1033. if (i==(fabs(a[1]-a[3])-1))
  1034.  
  1035. {
  1036. break;
  1037. }
  1038. }
  1039. else if ((a[3]==a[1]-1)&&(board[a[2]][a[3]]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn))
  1040. {
  1041. check=1;
  1042. }
  1043. else
  1044. {
  1045. check=0;
  1046. break;
  1047. }
  1048. }
  1049. if (check==1){
  1050. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1051. get=1;
  1052. }else {
  1053. get=0;}
  1054. }else
  1055. {
  1056. get=0;
  1057. }
  1058. return get;
  1059. }
  1060.  
  1061. if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1062. get=1;
  1063. }else {
  1064. get=0;}
  1065. return get;
  1066. }
  1067. if(board[a[0]][a[1]]==&w_rook){
  1068. if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
  1069. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  1070. {
  1071. if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
  1072. {
  1073. check=1;
  1074. if (i==(fabs(a[2]-a[0])-1))
  1075.  
  1076. {
  1077. break;
  1078. }
  1079. }
  1080. else if ((a[2]==a[0]-1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  1081. {
  1082. check=1;
  1083. }
  1084. else
  1085. {
  1086. check=0;
  1087. break;
  1088. }
  1089. }
  1090. if (check==1){
  1091. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
  1092. get=1;
  1093. }else {
  1094. get=0;}
  1095. }else
  1096. {
  1097. get=0;
  1098. }
  1099. return get;
  1100. }
  1101.  
  1102. if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
  1103. for (int i=1;i<=(fabs(a[2]-a[0]));i++)
  1104. {
  1105. if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
  1106. {
  1107. check=1;
  1108. if (i==(fabs(a[2]-a[0])-1))
  1109.  
  1110. {
  1111. break;
  1112. }
  1113. }
  1114. else if ((a[2]==a[0]+1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  1115. {
  1116. check=1;
  1117. }
  1118. else
  1119. {
  1120. check=0;
  1121. break;
  1122. }
  1123. }
  1124. if (check==1){
  1125. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
  1126. get=1;
  1127. }else {
  1128. get=0;}
  1129. }else
  1130. {
  1131. get=0;
  1132. }
  1133. return get;
  1134. }
  1135. if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal right moves*/
  1136. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  1137. {
  1138. if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
  1139. {
  1140. check=1;
  1141. if (i==(fabs(a[1]-a[3])-1))
  1142.  
  1143. {
  1144. break;
  1145. }
  1146. }
  1147. else if ((a[3]==a[0]+1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  1148. {
  1149. check=1;
  1150. }
  1151. else
  1152. {
  1153. check=0;
  1154. break;
  1155. }
  1156. }
  1157. if (check==1){
  1158. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1159. get=1;
  1160. }else {
  1161. get=0;}
  1162. }else
  1163. {
  1164. get=0;
  1165. }
  1166. return get;
  1167. }
  1168. if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal left moves*/
  1169. for (int i=1;i<=(fabs(a[1]-a[3]));i++)
  1170. {
  1171. if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
  1172. {
  1173. check=1;
  1174. if (i==(fabs(a[1]-a[3])-1))
  1175.  
  1176. {
  1177. break;
  1178. }
  1179. }
  1180. else if ((a[3]==a[1]-1)&&(board[a[2]][a[3]]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn))
  1181. {
  1182. check=1;
  1183. }
  1184. else
  1185. {
  1186. check=0;
  1187. break;
  1188. }
  1189. }
  1190. if (check==1){
  1191. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1192. get=1;
  1193. }else {
  1194. get=0;}
  1195. }else
  1196. {
  1197. get=0;
  1198. }
  1199. return get;
  1200. }
  1201.  
  1202. if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
  1203. get=1;
  1204. }else {
  1205. get=0;}
  1206. return get;
  1207. }
  1208. }else
  1209. get =0;
  1210. return get;
  1211. }
  1212. int check_bishop_move(){int get=0;
  1213. if(board[a[0]][a[1]]==&b_bishop){
  1214. /*for RIGHT diagonal move*/
  1215. if(a[3]<a[1]){{if(a[3]==a[1]-fabs(a[0]-a[2])){
  1216. board[a[2]][a[3]]=&b_bishop;
  1217. get=1;
  1218. }else {
  1219. get=0;}
  1220. return get;
  1221. }
  1222. }/*for left diagonal move*/
  1223. if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){
  1224. board[a[2]][a[3]]=&b_queen;
  1225. get=1;
  1226. }else {
  1227. get=0;}
  1228. return get;
  1229. }
  1230. }
  1231. if(board[a[0]][a[1]]==&w_bishop){
  1232. /*for RIGHT diagonal move*/
  1233. if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){
  1234. board[a[2]][a[3]]=&w_bishop;
  1235. get=1;
  1236. }else {
  1237. get=0;}
  1238. return get;
  1239.  
  1240. }/*for left diagonal move*/
  1241. if(a[3]<a[1]){if(a[3]==a[1]-fabs(a[0]-a[2])){
  1242. board[a[2]][a[3]]=&w_bishop;
  1243. get=1;
  1244. }else {
  1245. get=0;}
  1246. return get;
  1247. }
  1248. }
  1249. }
  1250.  
  1251. int main(){
  1252.  
  1253. chessboard();
  1254. for (int i=0;i<100;i++){
  1255. move();}
  1256. return 0;
  1257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement