Advertisement
Guest User

Main

a guest
Feb 20th, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 55.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define taille_max 3
  5. #define taille_max2 50
  6. #define ligne 8
  7. #define colonne 8
  8. int c=0; /*gestion de la couleur*/
  9. struct echiquier /*constitution d'une case*/
  10. {
  11. char nom_piece[taille_max];
  12. };
  13. struct echiquier plateau[ligne][colonne]; /*plateau de jeu*/
  14. void nouveaujeu();
  15. void sauvegarde();
  16. void chargement();
  17. void Option();
  18. void initialisation(); /*initialisation des pièces*/
  19. void affichage();
  20. int droit(int x, int y, int xd, int yd, float reste, char piece[2], int
  21. type);
  22. int echecnoir();
  23. int echecblanc();
  24.  
  25. main()
  26. {
  27. int choix=-1, test=0;
  28.  
  29. system ("clear"); /*efface l'ecran*/
  30. printf("Bienvenue au jeu d'échecs\n");
  31. printf("-1- Nouvelle partie\n");
  32. printf("-2- Charger\n");
  33. printf("-0- Quitter\n");
  34. printf("Choix?");
  35. scanf("%d",&choix);
  36.  
  37. switch (choix)
  38. {
  39. case 1 :initialisation();
  40. c=0;
  41. nouveaujeu();
  42. break;
  43. case 2 :chargement();
  44. break;
  45. case 0 :printf("Au revoir\n");
  46. break;
  47. default :printf("Erreur de saisie\n");
  48. break;
  49. }
  50. }
  51.  
  52. /*------------------------------------------------*/
  53.  
  54. void Option()
  55. {
  56. int choix=-1;
  57. char vide[2], retour[2];
  58.  
  59. system ("clear"); /*efface l'ecran*/
  60. printf("Options\n");
  61. printf("-1- Retour au menu principal\n");
  62. printf("-2- Enregistrement de la partie\n");
  63. printf("-3- Aide pour les mouvements de pieces\n");
  64. printf("-0- Retour à la partie\n");
  65.  
  66. printf("Choix?");
  67. scanf("%d",&choix);
  68. switch (choix)
  69. {
  70. case 1 :main();
  71. break;
  72. case 2 :sauvegarde();
  73. break;
  74. case 3 :system ("clear");
  75. printf("\n\tPour un deplacement : \"pa7-a5\"");
  76. printf("\n\tPour une prise : \"pa7xa5\"");
  77. printf("\n\tPour le petit roque : \"00\"");
  78. printf("\n\tPour le grand roque : \"000\"");
  79. printf("\n\tTapez sur n'importe qu'elle touche !\n");
  80. scanf("%s",retour);
  81. c--;
  82. nouveaujeu();
  83. break;
  84. case 0 :c--;
  85. nouveaujeu();
  86. break;
  87. default :printf("Erreur de saisie\n");
  88. printf("Tapez sur n'importe qu'elle touche !\n");
  89. scanf("%s",vide);
  90. scanf("%s",retour);
  91. c--;
  92. nouveaujeu();
  93. break;
  94. }
  95. }
  96.  
  97. /*------------------------------------------------*/
  98.  
  99. void initialisation()
  100. {
  101. int a, b;
  102. for (a=0;a<8;a++)
  103. for (b=0;b<8;b++)
  104. strcpy(plateau[a][b].nom_piece," ");/*Remise à zero de l'echiquier*/
  105.  
  106. for (b=0;b<8;b++)
  107. {
  108. strcpy(plateau[1][b].nom_piece,"pb");
  109. strcpy(plateau[6][b].nom_piece,"pn");
  110. } /*declaration de depart des blancs et des noirs*//*la piece 1 est un
  111. pion blanc, la piece 7 un pion noir*/
  112. strcpy(plateau[0][0].nom_piece,"Tb"); /*Tour blanche*/
  113. strcpy(plateau[0][7].nom_piece,"Tb"); /*Tour blanche*/
  114. strcpy(plateau[0][1].nom_piece,"Cb"); /*Cavalier blanc*/
  115. strcpy(plateau[0][6].nom_piece,"Cb"); /*Cavalier blanc*/
  116. strcpy(plateau[0][2].nom_piece,"Fb"); /*Fou blanc*/
  117. strcpy(plateau[0][5].nom_piece,"Fb"); /*Fou blanc*/
  118. strcpy(plateau[0][3].nom_piece,"Db"); /*Dame blanc*/
  119. strcpy(plateau[0][4].nom_piece,"Rb"); /*Roi blanc*/
  120. strcpy(plateau[7][0].nom_piece,"Tn"); /*Tour noir*/
  121. strcpy(plateau[7][7].nom_piece,"Tn"); /*Tour noir*/
  122. strcpy(plateau[7][1].nom_piece,"Cn"); /*Cavalier noir*/
  123. strcpy(plateau[7][6].nom_piece,"Cn"); /*Cavalier noir*/
  124. strcpy(plateau[7][2].nom_piece,"Fn"); /*Fou noir*/
  125. strcpy(plateau[7][5].nom_piece,"Fn"); /*Fou noir*/
  126. strcpy(plateau[7][3].nom_piece,"Dn"); /*Dame noir*/
  127. strcpy(plateau[7][4].nom_piece,"Rn"); /*Roi noir*/
  128. }
  129.  
  130. /*------------------------------------------------*/
  131.  
  132. void nouveaujeu()
  133. {
  134. int mate=0, option=-1, a, b, x, y, xd, yd, i, r, m, comp1, comp2, comp3,
  135. comp4, comp5, type, verif, test1, test2, numechec=0;
  136. float reste;
  137. char piece[3], coup[8], ok[2], chess[2], vide[2];
  138.  
  139. for( a=0; a<8; a++)
  140. {
  141. for (b=0; b<8; b++)
  142. {
  143. test1=strcmp(plateau[a][b].nom_piece, "00")==0;
  144. if (test1)
  145. {
  146. strcpy(plateau[a][b].nom_piece, " ");
  147. }
  148. }
  149. }
  150. while(!mate)
  151. {
  152. c++;
  153. reste=c%2;
  154. system ("clear"); /*efface l'ecran*/
  155. affichage();
  156. for (i=0;i<5;i++) /*remet a 0 la variable du coup ecoule*/
  157. {
  158. coup[i]=0;
  159. }
  160. printf("\n\tPour visualiser le menu d'option, taper \"O\"");
  161. printf("\n\tPour savoir comment bouger les pieces, aller dans le menu
  162. option\n");
  163. if (reste!=0)
  164. {
  165. printf("\n\tVous jouez avec les noirs");
  166. }
  167. else
  168. {
  169. printf("\n\tVous jouez avec les blancs");
  170. }
  171.  
  172. printf("\n\tQue jouez vous?");
  173. scanf("%s",coup);
  174. option=(strcmp(coup,"O")==0);
  175. if (!option)
  176. {
  177. type=coup[3];
  178. if (reste!=0)
  179. { /*detection de la piece utilisee*/
  180. if (coup[0]==112) strcpy(piece,"pn"); /*ici un pion*/
  181. else if (coup[0]==84) strcpy(piece,"Tn"); /*ici une tour*/
  182. else if (coup[0]==67) strcpy(piece,"Cn"); /*ici un cavalier*/
  183. else if (coup[0]==70) strcpy(piece,"Fn"); /*ici un fou*/
  184. else if (coup[0]==68) strcpy(piece,"Dn"); /*ici une dame*/
  185. else if (coup[0]==82) strcpy(piece,"Rn"); /*ici un roi*/
  186. else if (coup[1]==48) /*ici les roques*/
  187. {
  188. if (coup[2]==48) /*ici le grand roque*/
  189. {
  190. strcpy(piece,"000");
  191. }
  192. else
  193. {
  194. strcpy(piece,"00"); /*ici le petit roque*/
  195. }
  196. }
  197. }
  198. else
  199. {
  200. if (coup[0]==112) strcpy(piece,"pb"); /*ici un pion*/
  201. else if (coup[0]==84) strcpy(piece,"Tb"); /*ici une tour*/
  202. else if (coup[0]==67) strcpy(piece,"Cb"); /*ici un cavalier*/
  203. else if (coup[0]==70) strcpy(piece,"Fb"); /*ici un fou*/
  204. else if (coup[0]==68) strcpy(piece,"Db"); /*ici une dame*/
  205. else if (coup[0]==82) strcpy(piece,"Rb"); /*ici un roi*/
  206. else if (coup[1]==48) /*ici les roques*/
  207. {
  208. if (coup[2]==48) /*ici le grand roque*/
  209. {
  210. strcpy(piece,"000");
  211. }
  212. else
  213. {
  214. strcpy(piece,"00"); /*ici le petit roque*/
  215. }
  216. }
  217. }
  218. printf("piece = %s\n", piece);
  219. if (type==45)
  220. {
  221. xd=coup[2]-49; /*xd de depart*/
  222. yd=coup[1]-97; /*yd de depart*/
  223. x=coup[5]-49; /*x d'arrivee*/
  224. y=coup[4]-97; /*y d'arrivee*/
  225. }
  226. else if (type==120)
  227. { /*si le deuxieme caractere est x*/
  228. xd=coup[2]-49; /*xd de depart*/
  229. yd=coup[1]-97; /*yd de depart*/
  230. x=coup[5]-49; /*x d'arrivee*/
  231. y=coup[4]-97; /*y d'arrivee*/
  232. }
  233. if(type==45 || type==120)
  234. {
  235. if(reste!=0)
  236. {
  237. if (plateau[xd][yd].nom_piece[1]==110)
  238. {
  239. verif=(strcmp(plateau[xd][yd].nom_piece," ")==0);
  240. if (x>-1 && x<8 && y>-1 && y<8 && xd>-1 && xd<8 && yd>-1 && yd<8 &&
  241. !verif)
  242. {
  243. test2=0;
  244. while(!test2)
  245. {
  246. printf("deplacement de la piece de (%d, %d) en (%d, %d) - O / N ?",
  247. xd, yd, x, y);
  248. scanf("%s",ok);
  249. if((ok[0]==79)||(ok[0]==78))
  250. {
  251. test2=1;
  252. }
  253. }
  254. if (ok[0]==79)
  255. {
  256. r=droit(x, y, xd, yd, reste, piece, type);
  257. if (r==1)
  258. {
  259. strcpy(plateau[x][y].nom_piece,piece);
  260. strcpy(plateau[xd][yd].nom_piece," ");
  261. m=echecblanc();
  262. if (m==0)
  263. {
  264. m=echecnoir();
  265. if (m==0)
  266. {
  267. numechec=0;
  268. printf("Il n'y a pas d'échec\n");
  269. printf("Tapez sur n'importe qu'elle touche !\n");
  270. scanf("%s",chess);
  271. }
  272. else
  273. {
  274. numechec=0;
  275. printf("Les blancs sont echecs !\n");
  276. printf("Tapez sur n'importe qu'elle touche !\n");
  277. scanf("%s",chess);
  278. }
  279. }
  280. else
  281. {
  282. numechec++;
  283. if (numechec<3)
  284. {
  285. c--;
  286. strcpy(plateau[xd][yd].nom_piece,piece);
  287. strcpy(plateau[x][y].nom_piece," ");
  288. printf("Vous etes echec! c'est un mouvement impossible !\n");
  289. }
  290. else if (numechec>2)
  291. {
  292. printf("Vous etes echec et mate !\n");
  293. mate=1;
  294. }
  295. printf("Tapez sur n'importe qu'elle touche !\n");
  296. scanf("%s",chess);
  297. if (numechec>2)
  298. {
  299. main();
  300. }
  301. }
  302. }
  303. else
  304. {
  305. c--; /*cela permet au meme joueur de rejouer*/
  306. printf("Coup invalide\n");
  307. printf("Tapez sur n'importe qu'elle touche !\n");
  308. scanf("%s",chess);
  309. }
  310. }
  311. else if(ok[0]==78)
  312. {
  313. c--; /*cela permet au meme joueur de rejouer*/
  314. printf("Vous pouvez choisir un autre coup\n");
  315. printf("Tapez sur n'importe qu'elle touche !\n");
  316. scanf("%s",chess);
  317. }
  318. }
  319. else
  320. {
  321. c--; /*cela permet au meme joueur de rejouer*/
  322. printf("Vous vous etes trompé de coordonnées!\n");
  323. printf("Tapez sur n'importe qu'elle touche !\n");
  324. scanf("%s",chess);
  325. }
  326. }
  327. else
  328. {
  329. c--; /*cela permet au meme joueur de rejouer*/
  330. printf("Vous jouez avec les noirs !\n");
  331. printf("Tapez sur n'importe qu'elle touche !\n");
  332. scanf("%s",vide);
  333. scanf("%s",chess);
  334. }
  335. }
  336. else
  337. {
  338. if (plateau[xd][yd].nom_piece[1]==98)
  339. {
  340. verif=(strcmp(plateau[xd][yd].nom_piece," ")==0);
  341. if (x>-1 && x<8 && y>-1 && y<8 && xd>-1 && xd<8 && yd>-1 && yd<8 &&
  342. !verif)
  343. {
  344. test2=0;
  345. while(!test2)
  346. {
  347. printf("deplacement de la piece de (%d, %d) en (%d, %d) - O / N ?",
  348. xd, yd, x, y);
  349. scanf("%s",ok);
  350. if((ok[0]==79)||(ok[0]==78))
  351. {
  352. test2=1;
  353. }
  354. }
  355. if (ok[0]==79)
  356. {
  357. r=droit(x, y, xd, yd, reste, piece, type);
  358. if (r==1)
  359. {
  360. strcpy(plateau[x][y].nom_piece,piece);
  361. strcpy(plateau[xd][yd].nom_piece," ");
  362. m=echecnoir();
  363. if (m==0)
  364. {
  365. m=echecblanc();
  366. if (m==0)
  367. {
  368. numechec=0;
  369. printf("Il n'y a pas d'échec !\n");
  370. printf("Tapez sur n'importe qu'elle touche !\n");
  371. scanf("%s",chess);
  372. }
  373. else
  374. {
  375. numechec=0;
  376. printf("Les noirs sont echecs !\n");
  377. printf("Tapez sur n'importe qu'elle touche !\n");
  378. scanf("%s",chess);
  379. }
  380. }
  381. else
  382. {
  383. numechec++;
  384. if (numechec<3)
  385. {
  386. c--;
  387. strcpy(plateau[xd][yd].nom_piece,piece);
  388. strcpy(plateau[x][y].nom_piece," ");
  389. printf("Vous etes echec! c'est un mouvement impossible !\n");
  390. }
  391. else if (numechec>2)
  392. {
  393. printf("Vous etes echec et mate ! \n");
  394. mate=1;
  395. }
  396. printf("Tapez sur n'importe qu'elle touche !\n");
  397. scanf("%s",chess);
  398. if (numechec>2)
  399. {
  400. main();
  401. }
  402. }
  403. }
  404. else
  405. {
  406. c--; /*cela permet au meme joueur de rejouer*/
  407. printf("Coup invalide\n");
  408. printf("Tapez sur n'importe qu'elle touche !\n");
  409. scanf("%s",chess);
  410. }
  411. }
  412. else if(ok[0]==78)
  413. {
  414. c--; /*cela permet au meme joueur de rejouer*/
  415. printf("Vous pouvez choisir un autre coup\n");
  416. printf("Tapez sur n'importe qu'elle touche !\n");
  417. scanf("%s",chess);
  418. }
  419. }
  420. else
  421. {
  422. c--; /*cela permet au meme joueur de rejouer*/
  423. printf("Vous vous etes trompé de coordonnées!\n");
  424. printf("Tapez sur n'importe qu'elle touche !\n");
  425. scanf("%s",chess);
  426. }
  427. }
  428. else
  429. {
  430. c--; /*cela permet au meme joueur de rejouer*/
  431. printf("Vous jouez avec les blancs !\n");
  432. printf("Tapez sur n'importe qu'elle touche !\n");
  433. scanf("%s",vide);
  434. scanf("%s",chess);
  435. }
  436. }
  437. }
  438. else if(piece[0]==48)
  439. {
  440. if(piece[2]==48)
  441. {
  442. if (reste!=0)
  443. {
  444. comp1=(strcmp(plateau[7][4].nom_piece,"Rn")==0);
  445. comp2=(strcmp(plateau[7][3].nom_piece," ")==0);
  446. comp3=(strcmp(plateau[7][2].nom_piece," ")==0);
  447. comp4=(strcmp(plateau[7][1].nom_piece," ")==0);
  448. comp5=(strcmp(plateau[7][0].nom_piece,"Tn")==0);
  449. if (comp1 && comp2 && comp3 && comp4 && comp5)
  450. {
  451. strcpy(plateau[7][3].nom_piece,"Tn");
  452. strcpy(plateau[7][2].nom_piece,"Rn");
  453. strcpy(plateau[7][4].nom_piece," ");
  454. strcpy(plateau[7][0].nom_piece," ");
  455. }
  456. else
  457. {
  458. c--; /*cela permet au meme joueur de rejouer*/
  459. printf("Le roque est impossible !\n");
  460. printf("Tapez sur n'importe qu'elle touche !\n");
  461. scanf("%s",chess);
  462. }
  463. }
  464. else
  465. {
  466. comp1=(strcmp(plateau[0][4].nom_piece,"Rn")==0);
  467. comp2=(strcmp(plateau[0][3].nom_piece," ")==0);
  468. comp3=(strcmp(plateau[0][2].nom_piece," ")==0);
  469. comp4=(strcmp(plateau[0][1].nom_piece," ")==0);
  470. comp5=(strcmp(plateau[0][0].nom_piece,"Tn")==0);
  471. if (comp1 && comp2 && comp3 && comp4 && comp5)
  472. {
  473. strcpy(plateau[0][3].nom_piece,"Tb");
  474. strcpy(plateau[0][2].nom_piece,"Rb");
  475. strcpy(plateau[0][4].nom_piece," ");
  476. strcpy(plateau[0][0].nom_piece," ");
  477. }
  478. else
  479. {
  480. c--; /*cela permet au meme joueur de rejouer*/
  481. printf("Le roque est impossible !\n");
  482. printf("Tapez sur n'importe qu'elle touche !\n");
  483. scanf("%s",chess);
  484. }
  485. }
  486. }
  487. else if(piece[1]==48)
  488. {
  489. if (reste!=0)
  490. {
  491. comp1=(strcmp(plateau[7][4].nom_piece,"Rn")==0);
  492. comp2=(strcmp(plateau[7][5].nom_piece," ")==0);
  493. comp3=(strcmp(plateau[7][6].nom_piece," ")==0);
  494. comp4=(strcmp(plateau[7][7].nom_piece,"Tn")==0);
  495. if (comp1 && comp2 && comp3 && comp4)
  496. {
  497. strcpy(plateau[7][5].nom_piece,"Tn");
  498. strcpy(plateau[7][6].nom_piece,"Rn");
  499. strcpy(plateau[7][4].nom_piece," ");
  500. strcpy(plateau[7][7].nom_piece," ");
  501. }
  502. else
  503. {
  504. c--; /*cela permet au meme joueur de rejouer*/
  505. printf("Le roque est impossible !\n");
  506. printf("Tapez sur n'importe qu'elle touche !\n");
  507. scanf("%s",chess);
  508. }
  509. }
  510. else
  511. {
  512. comp1=(strcmp(plateau[0][4].nom_piece,"Rn")==0);
  513. comp2=(strcmp(plateau[0][5].nom_piece," ")==0);
  514. comp3=(strcmp(plateau[0][6].nom_piece," ")==0);
  515. comp4=(strcmp(plateau[0][7].nom_piece,"Tn")==0);
  516. if (comp1 && comp2 && comp3 && comp4)
  517. {
  518. strcpy(plateau[0][5].nom_piece,"Tb");
  519. strcpy(plateau[0][6].nom_piece,"Rb");
  520. strcpy(plateau[0][4].nom_piece," ");
  521. strcpy(plateau[0][7].nom_piece," ");
  522. }
  523. else
  524. {
  525. c--; /*cela permet au meme joueur de rejouer*/
  526. printf("Le roque est impossible !\n");
  527. printf("Tapez sur n'importe qu'elle touche !\n");
  528. scanf("%s",chess);
  529. }
  530. }
  531. }
  532. }
  533. else
  534. {
  535. c--; /*cela permet au meme joueur de rejouer*/
  536. printf("Vous vous etes trompé de coordonnées!\n");
  537. printf("Tapez sur n'importe qu'elle touche !\n");
  538. scanf("%s",chess);
  539. }
  540. }
  541. else
  542. {
  543. Option();
  544. break;
  545. }
  546. }
  547. }
  548.  
  549. /*------------------------------------------------*/
  550.  
  551. void affichage()
  552. {
  553. int a, b, c=0, couleur;
  554.  
  555. system ("clear"); /*efface l'ecran*/
  556. printf("\n\t|--a----b----c----d---e----f----g----h--|\n\t");
  557. printf("|---------------------------------------|\n\t"); /*Les affichages
  558. sont tres basics, seulement des lettres et les
  559. coordonnees des cases*/
  560. for (a=0;a<8;a++) /*fait varier l'abscisse de 0 a  7 ce qui corespond aux
  561. colonnes de 'a' a  'h'*/
  562. {
  563. for (b=0;b<8;b++) /*idem pour l'ordonnee ce qui corespond aux lignes de
  564. '1' a  '8'.*/
  565. {
  566. c++;
  567. printf("| %s ",plateau[a][b].nom_piece);
  568. if ( c % 8 == 0) /*si 8 cases ont ete affichees alors on retourne a la
  569. ligne*/
  570. printf("|%d\n\t|---------------------------------------|\n\t", c/8);
  571. }
  572. }
  573. printf("|--a----b----c----d---e----f----g----h--|\n");
  574. }
  575.  
  576. /*------------------------------------------------*/
  577.  
  578. int droit(int x, int y, int xd, int yd, float reste, char piece[2], int
  579. type)
  580. {
  581. int droits, c, a , b, i, t=0, j, r=0, depart, e, f, calcul=0, verif1,
  582. verif2;
  583. if (type==45)
  584. {
  585. if(piece[0]==112) /*pion*/
  586. {
  587. if(piece[1]==98) /*blanc*/
  588. {
  589. if (yd==y)
  590. {
  591. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  592. if (verif1)
  593. {
  594. depart=x-1;
  595. for (i=depart; i>xd; i--)
  596. {
  597. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  598. if(!verif2)
  599. {
  600. calcul=calcul+1;
  601. }
  602. }
  603. if (calcul==0)
  604. {
  605. if (xd==1)
  606. {
  607. if (x-xd==1 || x-xd==2)
  608. {
  609. droits=1;
  610. return droits;
  611. }
  612. }
  613. else if (x-xd==1)
  614. {
  615. droits=1;
  616. return droits;
  617. }
  618. }
  619. }
  620. }
  621. }
  622. else if(piece[1]==110) /*noir*/
  623. {
  624. if (yd==y)
  625. {
  626. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  627. if (verif1)
  628. {
  629. depart=x+1;
  630. for (i=depart; i<xd; i++)
  631. {
  632. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  633. if(!verif2)
  634. {
  635. calcul=calcul+1;
  636. }
  637. }
  638. if (calcul==0)
  639. {
  640. if (xd==6)
  641. {
  642. if (xd-x==1 || xd-x==2)
  643. {
  644. droits=1;
  645. return droits;
  646. }
  647. }
  648. else if (xd-x==1)
  649. {
  650. droits=1;
  651. return droits;
  652. }
  653. }
  654. }
  655. }
  656. }
  657. }
  658. if(piece[0]==82) /*roi*/
  659. {
  660. if(piece[1]==110 || piece[1]==98) /*noir et blanc*/
  661. {
  662. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  663. if (verif1)
  664. {
  665. if (xd-x==1 || x-xd==1 || yd-y==1 || y-yd==1)
  666. {
  667. droits=1;
  668. return droits;
  669. }
  670. }
  671. }
  672. }
  673. else if(piece[0]==68) /*dame*/
  674. {
  675. if(piece[1]==110 || piece[1]==98) /*noir et blanc*/
  676. {
  677. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  678. if (verif1)
  679. {
  680. if(y==yd)
  681. {
  682. if (x<xd)
  683. {
  684. depart=x+1;
  685. for (i=depart; i<xd; i++)
  686. {
  687. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  688. if(!verif2)
  689. {
  690. calcul=calcul+1;;
  691. }
  692. }
  693. }
  694. else if(x>xd)
  695. {
  696. depart=x-1;
  697. for (i=depart; i>xd; i--)
  698. {
  699. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  700. if(!verif2)
  701. {
  702. calcul=calcul+1;
  703. }
  704. } }
  705. }
  706. else if(x==xd)
  707. {
  708. if (y<yd)
  709. {
  710. depart=y+1;
  711. for (i=depart; i<yd; i++)
  712. {
  713. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  714. if(!verif2)
  715. {
  716. calcul=calcul+1;
  717. }
  718. }
  719. }
  720. else if(y>yd)
  721. {
  722. depart=y-1;
  723. for (i=depart; i>yd; i--)
  724. {
  725. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  726. if(!verif2)
  727. {
  728. calcul=calcul+1;
  729. }
  730. }
  731. }
  732. }
  733. else if((x-xd==yd-y)||(x-xd==y-yd))
  734. {
  735. if (x>xd)
  736. {
  737. t=x-xd;
  738. }
  739. else
  740. {
  741. t=xd-x;
  742. }
  743. for (i=1; i<t; i++)
  744. {
  745. if (x<xd && y>yd)
  746. {
  747. e=xd-i;
  748. f=yd+i;
  749. }
  750. else if(x<xd && y<yd)
  751. {
  752. e=xd-i;
  753. f=yd-i;
  754. }
  755. else if (x>xd && y>yd)
  756. {
  757. e=xd+i;
  758. f=yd+i;
  759. }
  760. else if(x>xd && y<yd)
  761. {
  762. e=xd+i;
  763. f=yd-i;
  764. }
  765. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  766. if(!verif2)
  767. {
  768. calcul=calcul+1;
  769. }
  770. }
  771. }
  772. if (calcul==0)
  773. {
  774. if (x==xd || y==yd || (x-xd==yd-y) || (x-xd==y-yd))
  775. {
  776. droits=1;
  777. return droits;
  778. }
  779. }
  780. }
  781. }
  782. }
  783. else if(piece[0]==84) /*tour*/
  784. {
  785. if(piece[1]==110 || piece[1]==98) /*noir et blanc*/
  786. {
  787. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  788. if (verif1)
  789. {
  790. if(y==yd)
  791. {
  792. if (x<xd)
  793. {
  794. depart=x+1;
  795. for (i=depart; i<xd; i++)
  796. {
  797. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  798. if(!verif2)
  799. {
  800. calcul=calcul+1;
  801. }
  802. }
  803. }
  804. else if(x>xd)
  805. {
  806. depart=x-1;
  807. for (i=depart; i>xd; i--)
  808. {
  809. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  810. if(!verif2)
  811. {
  812. calcul=calcul+1;
  813. }
  814. }
  815. }
  816. }
  817. else if(x==xd)
  818. {
  819. if (y<yd)
  820. {
  821. depart=y+1;
  822. for (i=depart; i<yd; i++)
  823. {
  824. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  825. if(!verif2)
  826. {
  827. calcul=calcul+1;
  828. }
  829. }
  830. }
  831. else if(y>yd)
  832. {
  833. depart=y-1;
  834. for (i=depart; i>yd; i--)
  835. {
  836. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  837. if(!verif2)
  838. {
  839. calcul=calcul+1;
  840. }
  841. }
  842. }
  843. }
  844. if (calcul==0)
  845. {
  846. if ((x==xd)||(y==yd))
  847. {
  848. droits=1;
  849. return droits;
  850. }
  851. }
  852.  
  853. }
  854. }
  855. }
  856. else if(piece[0]==67) /*cavalier*/
  857. {
  858. if(piece[1]==110 || piece[1]==98) /*noir et blanc*/
  859. {
  860. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  861. if (verif1)
  862. {
  863. if (((xd-x==2) && (yd-y==1)) || ((xd-x==2) && (y-yd==1)) || ((x-xd==2)
  864. && (yd-y==1)) || ((x-xd==2) && (y-yd==1))
  865. || ((xd-x==1) && (yd-y==2)) || ((xd-x==1) && (y-yd==2)) || ((x-xd==1) &&
  866. (yd-y==2)) || ((x-xd==1) && (y-yd==2))) /*noir*/
  867. {
  868. droits=1;
  869. return droits;
  870. }
  871. }
  872. }
  873. }
  874. else if(piece[0]==70) /*fou*/
  875. {
  876. if(piece[1]==110 || piece[1]==98) /*noir et blanc*/
  877. {
  878. verif1=(strcmp(plateau[x][y].nom_piece," ")==0);
  879. if (verif1)
  880. {
  881. if (x>xd)
  882. {
  883. t=x-xd;
  884. }
  885. else
  886. {
  887. t=xd-x;
  888. }
  889. for (i=1; i<t; i++)
  890. {
  891. if (x<xd && y>yd)
  892. {
  893. e=xd-i;
  894. f=yd+i;
  895. }
  896. else if(x<xd && y<yd)
  897. {
  898. e=xd-i;
  899. f=yd-i;
  900. }
  901. else if (x>xd && y>yd)
  902. {
  903. e=xd+i;
  904. f=yd+i;
  905. }
  906. else if(x>xd && y<yd)
  907. {
  908. e=xd+i;
  909. f=yd-i;
  910. }
  911. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  912. if(!verif2)
  913. {
  914. calcul=calcul+1;
  915. }
  916. }
  917.  
  918. if (calcul==0)
  919. {
  920. if((x-xd==yd-y)||(x-xd==y-yd))
  921. {
  922. droits=1;
  923. return droits;
  924. }
  925. }
  926. }
  927. }
  928. }
  929. }
  930. else if (type==120)
  931. {
  932. if(piece[0]==112) /*pion*/
  933. {
  934. if(piece[1]==98) /*blanc*/
  935. {
  936. if (plateau[x][y].nom_piece[1]==110)
  937. {
  938. if ((x-xd==1 && y-yd==1)||(x-xd==1 && yd-y==1))
  939. {
  940. droits=1;
  941. return droits;
  942. }
  943. }
  944. }
  945. else if(piece[1]==110) /*noir*/
  946. {
  947. if (plateau[x][y].nom_piece[1]==98)
  948. {
  949. if ((xd-x==1 && y-yd==1)||(xd-x==1 && yd-y==1))
  950. {
  951. droits=1;
  952. return droits;
  953. }
  954. }
  955. }
  956. }
  957. if(piece[0]==82) /*roi*/
  958. {
  959. if(piece[1]==98) /*blanc*/
  960. {
  961. if (plateau[x][y].nom_piece[1]==110)
  962. {
  963. if ((xd-x==1) || (x-xd==1) || (yd-y==1) || (y-yd==1))
  964. {
  965. droits=1;
  966. return droits;
  967. }
  968. }
  969. }
  970. else if(piece[1]==110) /*noir*/
  971. {
  972. if (plateau[x][y].nom_piece[1]==98)
  973. {
  974. if ((xd-x==1) || (x-xd==1) || (yd-y==1) || (y-yd==1))
  975. {
  976. droits=1;
  977. return droits;
  978. }
  979. }
  980. }
  981. }
  982. else if(piece[0]==68) /*dame*/
  983. {
  984. if(piece[1]==98) /*blanc*/
  985. {
  986. if (plateau[x][y].nom_piece[1]==110)
  987. {
  988. if(y==yd)
  989. {
  990. if (x<xd)
  991. {
  992. depart=x+1;
  993. for (i=depart; i<xd; i++)
  994. {
  995. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  996. if(!verif2)
  997. {
  998. calcul=calcul+1;
  999. }
  1000. }
  1001. }
  1002. else if(x>xd)
  1003. {
  1004. depart=x-1;
  1005. for (i=depart; i>xd; i--)
  1006. {
  1007. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1008. if(!verif2)
  1009. {
  1010. calcul=calcul+1;
  1011. }
  1012. }
  1013. }
  1014. }
  1015. else if(x==xd)
  1016. {
  1017. if (y<yd)
  1018. {
  1019. depart=y+1;
  1020. for (i=depart; i<yd; i++)
  1021. {
  1022. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1023. if(!verif2)
  1024. {
  1025. calcul=calcul+1;
  1026. }
  1027. }
  1028. }
  1029. else if(y>yd)
  1030. {
  1031. depart=y-1;
  1032. for (i=depart; i>yd; i--)
  1033. {
  1034. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1035. if(!verif2)
  1036. {
  1037. calcul=calcul+1;
  1038. }
  1039. }
  1040. }
  1041. }
  1042. else if((x-xd==yd-y)||(x-xd==y-yd))
  1043. {
  1044. if (x>xd)
  1045. {
  1046. t=x-xd;
  1047. }
  1048. else
  1049. {
  1050. t=xd-x;
  1051. }
  1052. for (i=1; i<t; i++)
  1053. {
  1054. if (x<xd && y>yd)
  1055. {
  1056. e=xd-i;
  1057. f=yd+i;
  1058. }
  1059. else if(x<xd && y<yd)
  1060. {
  1061. e=xd-i;
  1062. f=yd-i;
  1063. }
  1064. else if (x>xd && y>yd)
  1065. {
  1066. e=xd+i;
  1067. f=yd+i;
  1068. }
  1069. else if(x>xd && y<yd)
  1070. {
  1071. e=xd+i;
  1072. f=yd-i;
  1073. }
  1074. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  1075. if(!verif2)
  1076. {
  1077. calcul=calcul+1;
  1078. }
  1079. }
  1080. }
  1081. if (calcul==0)
  1082. {
  1083. droits=1;
  1084. return droits;
  1085. }
  1086. }
  1087. }
  1088. else if(piece[1]==110) /*noir*/
  1089. {
  1090. if (plateau[x][y].nom_piece[1]==98)
  1091. {
  1092. if(y==yd)
  1093. {
  1094. if (x<xd)
  1095. {
  1096. depart=x+1;
  1097. for (i=depart; i<xd; i++)
  1098. {
  1099. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1100. if(!verif2)
  1101. {
  1102. calcul=calcul+1;
  1103. }
  1104. }
  1105. }
  1106. else if(x>xd)
  1107. {
  1108. depart=x-1;
  1109. for (i=depart; i>xd; i--)
  1110. {
  1111. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1112. if(!verif2)
  1113. {
  1114. calcul=calcul+1;
  1115. }
  1116. }
  1117. }
  1118. }
  1119. else if(x==xd)
  1120. {
  1121. if (y<yd)
  1122. {
  1123. depart=y+1;
  1124. for (i=depart; i<yd; i++)
  1125. {
  1126. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1127. if(!verif2)
  1128. {
  1129. calcul=calcul+1;
  1130. }
  1131. }
  1132. }
  1133. else if(y>yd)
  1134. {
  1135. depart=y-1;
  1136. for (i=depart; i>yd; i--)
  1137. {
  1138. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1139. if(!verif2)
  1140. {
  1141. calcul=calcul+1;
  1142. }
  1143. }
  1144. }
  1145. }
  1146. else if((x-xd==yd-y)||(x-xd==y-yd))
  1147. {
  1148. if (x>xd)
  1149. {
  1150. t=x-xd;
  1151. }
  1152. else
  1153. {
  1154. t=xd-x;
  1155. }
  1156. for (i=1; i<t; i++)
  1157. {
  1158. if (x<xd && y>yd)
  1159. {
  1160. e=xd-i;
  1161. f=yd+i;
  1162. }
  1163. else if(x<xd && y<yd)
  1164. {
  1165. e=xd-i;
  1166. f=yd-i;
  1167. }
  1168. else if (x>xd && y>yd)
  1169. {
  1170. e=xd+i;
  1171. f=yd+i;
  1172. }
  1173. else if(x>xd && y<yd)
  1174. {
  1175. e=xd+i;
  1176. f=yd-i;
  1177. }
  1178. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  1179. if(!verif2)
  1180. {
  1181. calcul=calcul+1;
  1182. }
  1183. }
  1184. }
  1185. if (calcul==0)
  1186. {
  1187. droits=1;
  1188. return droits;
  1189. }
  1190. }
  1191. }
  1192. }
  1193. else if(piece[0]==84) /*tour*/
  1194. {
  1195. if(piece[1]==98) /*blanc*/
  1196. {
  1197. if (plateau[x][y].nom_piece[1]==110)
  1198. {
  1199. if(y==yd)
  1200. {
  1201. if (x<xd)
  1202. {
  1203. depart=x+1;
  1204. for (i=depart; i<xd; i++)
  1205. {
  1206. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1207. if(!verif2)
  1208. {
  1209. calcul=calcul+1;
  1210. }
  1211. }
  1212. }
  1213. else if(x>xd)
  1214. {
  1215. depart=x-1;
  1216. for (i=depart; i>xd; i--)
  1217. {
  1218. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1219. if(!verif2)
  1220. {
  1221. calcul=calcul+1;
  1222. }
  1223. }
  1224. }
  1225. if (calcul==0)
  1226. {
  1227. droits=1;
  1228. return droits;
  1229. }
  1230. }
  1231. else if(x==xd)
  1232. {
  1233. if (y<yd)
  1234. {
  1235. depart=y+1;
  1236. for (i=depart; i<yd; i++)
  1237. {
  1238. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1239. if(!verif2)
  1240. {
  1241. calcul=calcul+1;
  1242. }
  1243. }
  1244. }
  1245. else if(y>yd)
  1246. {
  1247. depart=y-1;
  1248. for (i=depart; i>yd; i--)
  1249. {
  1250. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1251. if(!verif2)
  1252. {
  1253. calcul=calcul+1;
  1254. }
  1255. }
  1256. }
  1257. }
  1258. if (calcul==0)
  1259. {
  1260. if (x==xd || y==yd)
  1261. {
  1262. droits=1;
  1263. return droits;
  1264. }
  1265. }
  1266. }
  1267. }
  1268. else if(piece[1]==110)
  1269. {
  1270. if (plateau[x][y].nom_piece[1]==98)
  1271. {
  1272. if(y==yd)
  1273. {
  1274. if (x<xd)
  1275. {
  1276. depart=x+1;
  1277. for (i=depart; i<xd; i++)
  1278. {
  1279. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1280. if(!verif2)
  1281. {
  1282. calcul=calcul+1;
  1283. }
  1284. }
  1285. }
  1286. else if(x>xd)
  1287. {
  1288. depart=x-1;
  1289. for (i=depart; i>xd; i--)
  1290. {
  1291. verif2=(strcmp(plateau[i][yd].nom_piece," ")==0);
  1292. if(!verif2)
  1293. {
  1294. calcul=calcul+1;
  1295. }
  1296. }
  1297. }
  1298. }
  1299. else if(x==xd)
  1300. {
  1301. if (y<yd)
  1302. {
  1303. depart=y+1;
  1304. for (i=depart; i<yd; i++)
  1305. {
  1306. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1307. if(!verif2)
  1308. {
  1309. calcul=calcul+1;
  1310. }
  1311. }
  1312. }
  1313. else if(y>yd)
  1314. {
  1315. depart=x-1;
  1316. for (i=depart; i>yd; i--)
  1317. {
  1318. verif2=(strcmp(plateau[xd][i].nom_piece," ")==0);
  1319. if(!verif2)
  1320. {
  1321. calcul=calcul+1;
  1322. }
  1323. }
  1324. }
  1325. }
  1326. if (calcul==0)
  1327. {
  1328. if (x==xd || y==yd)
  1329. {
  1330. droits=1;
  1331. return droits;
  1332. }
  1333. }
  1334. }
  1335. }
  1336. }
  1337. else if(piece[0]==67) /*cavalier*/
  1338. {
  1339. if(piece[1]==98) /*blanc*/
  1340. {
  1341. if (plateau[x][y].nom_piece[1]==110)
  1342. {
  1343. if (((xd-x==2) && (yd-y==1)) || ((xd-x==2) && (y-yd==1)) || ((x-xd==2)
  1344. && (yd-y==1)) || ((x-xd==2) && (y-yd==1))
  1345. || ((xd-x==1) && (yd-y==2)) || ((xd-x==1) && (y-yd==2)) || ((x-xd==1) &&
  1346. (yd-y==2)) || ((x-xd==1) && (y-yd==2))) /*noir*/
  1347. {
  1348. droits=1;
  1349. return droits;
  1350. }
  1351. }
  1352. }
  1353. else if(piece[1]==110) /*noir*/
  1354. {
  1355. if (plateau[x][y].nom_piece[1]==98)
  1356. {
  1357. if (((xd-x==2) && (yd-y==1)) || ((xd-x==2) && (y-yd==1)) || ((x-xd==2)
  1358. && (yd-y==1)) || ((x-xd==2) && (y-yd==1))
  1359. || ((xd-x==1) && (yd-y==2)) || ((xd-x==1) && (y-yd==2)) || ((x-xd==1) &&
  1360. (yd-y==2)) || ((x-xd==1) && (y-yd==2))) /*noir*/
  1361. {
  1362. droits=1;
  1363. return droits;
  1364. }
  1365. }
  1366. }
  1367. }
  1368. else if(piece[0]==70) /*fou*/
  1369. {
  1370. if(piece[1]==98) /*blanc*/
  1371. {
  1372. if (plateau[x][y].nom_piece[1]==110)
  1373. {
  1374. if (x>xd)
  1375. {
  1376. t=x-xd;
  1377. }
  1378. else
  1379. {
  1380. t=xd-x;
  1381. }
  1382. for (i=1; i<t; i++)
  1383. {
  1384. if (x<xd && y>yd)
  1385. {
  1386. e=xd-i;
  1387. f=yd+i;
  1388. }
  1389. else if(x<xd && y<yd)
  1390. {
  1391. e=xd-i;
  1392. f=yd-i;
  1393. }
  1394. else if (x>xd && y>yd)
  1395. {
  1396. e=xd+i;
  1397. f=yd+i;
  1398. }
  1399. else if(x>xd && y<yd)
  1400. {
  1401. e=xd+i;
  1402. f=yd-i;
  1403. }
  1404. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  1405. if(!verif2)
  1406. {
  1407. calcul=calcul+1;
  1408. }
  1409. }
  1410. if (calcul==0)
  1411. {
  1412. if((x-xd==yd-y)||(x-xd==y-yd))
  1413. {
  1414. droits=1;
  1415. return droits;
  1416. }
  1417. }
  1418. }
  1419. }
  1420. else if(piece[1]==110) /*noir*/
  1421. {
  1422. if (plateau[x][y].nom_piece[1]==98)
  1423. {
  1424. if (x>xd)
  1425. {
  1426. t=x-xd;
  1427. }
  1428. else
  1429. {
  1430. t=xd-x;
  1431. }
  1432. for (i=1; i<t; i++)
  1433. {
  1434. if (x<xd && y>yd)
  1435. {
  1436. e=xd-i;
  1437. f=yd+i;
  1438. }
  1439. else if(x<xd && y<yd)
  1440. {
  1441. e=xd-i;
  1442. f=yd-i;
  1443. }
  1444. else if (x>xd && y>yd)
  1445. {
  1446. e=xd+i;
  1447. f=yd+i;
  1448. }
  1449. else if(x>xd && y<yd)
  1450. {
  1451. e=xd+i;
  1452. f=yd-i;
  1453. }
  1454. printf("%d",i);
  1455. verif2=(strcmp(plateau[e][f].nom_piece," ")==0);
  1456. printf("%d",verif2);
  1457. if(!verif2)
  1458. {
  1459. calcul=calcul+1;
  1460. printf("%d",calcul);
  1461. }
  1462. }
  1463. if (calcul==0)
  1464. {
  1465. if((x-xd==yd-y)||(x-xd==y-yd))
  1466. {
  1467. droits=1;
  1468. return droits;
  1469. }
  1470. }
  1471. }
  1472. }
  1473. }
  1474. }
  1475. }
  1476.  
  1477. /*------------------------------------------------*/
  1478.  
  1479. int echecnoir()
  1480. {
  1481. int i, e, f, a, b, calcul, depart, echec=0, xroi, yroi,comp1, comp2;
  1482.  
  1483. for (a=0;a<8;a++)
  1484. {
  1485. for (b=0;b<8;b++)
  1486. {
  1487. if (plateau[a][b].nom_piece[0]==82)
  1488. {
  1489. if (plateau[a][b].nom_piece[1]==98)
  1490. {
  1491. xroi=a;
  1492. yroi=b;
  1493. break;
  1494. }
  1495. }
  1496. }
  1497. }
  1498.  
  1499. printf("Le roi blanc est en(%d, %d)\n", xroi, yroi);
  1500.  
  1501. e=xroi+1;
  1502. f=yroi+1;
  1503. comp1=(strcmp(plateau[e][f].nom_piece,"pn")==0);
  1504. if (comp1)
  1505. {
  1506. echec=1;
  1507. printf("Un echec detecte par un pion noir...\n");
  1508. }
  1509. e=xroi+1;
  1510. f=yroi-1;
  1511. comp1=(strcmp(plateau[e][f].nom_piece,"pn")==0);
  1512. if (comp1)
  1513. {
  1514. echec=1;
  1515. printf("Un echec detecte par un pion noir...\n");
  1516. }
  1517. e=xroi+1;
  1518. f=yroi+2;
  1519. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1520. if (comp1)
  1521. {
  1522. echec=1;
  1523. printf("Un echec detecte par un cavalier noir...\n");
  1524. }
  1525. e=xroi+1;
  1526. f=yroi-2;
  1527. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1528. if (comp1)
  1529. {
  1530. echec=1;
  1531. printf("Un echec detecte par un cavalier noir...\n");
  1532. }
  1533. e=xroi-1;
  1534. f=yroi+2;
  1535. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1536. if (comp1)
  1537. {
  1538. echec=1;
  1539. printf("Un echec detecte par un cavalier noir...\n");
  1540. }
  1541. e=xroi-1;
  1542. f=yroi-2;
  1543. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1544. if (comp1)
  1545. {
  1546. echec=1;
  1547. printf("Un echec detecte par un cavalier noir...\n");
  1548. }
  1549. e=xroi+2;
  1550. f=yroi+1;
  1551. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1552. if (comp1)
  1553. {
  1554. echec=1;
  1555. printf("Un echec detecte par un cavalier noir...\n");
  1556. }
  1557. e=xroi+2;
  1558. f=yroi-1;
  1559. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1560. if (comp1)
  1561. {
  1562. echec=1;
  1563. printf("Un echec detecte par un cavalier noir...\n");
  1564. }
  1565. e=xroi-2;
  1566. f=yroi+1;
  1567. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1568. if (comp1)
  1569. {
  1570. echec=1;
  1571. printf("Un echec detecte par un cavalier noir...\n");
  1572. }
  1573. e=xroi-2;
  1574. f=yroi-1;
  1575. comp1=(strcmp(plateau[e][f].nom_piece,"Cn")==0);
  1576. if (comp1)
  1577. {
  1578. echec=1;
  1579. printf("Un echec detecte par un cavalier noir...\n");
  1580. }
  1581. e=xroi-1;
  1582. f=yroi-1;
  1583. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1584. if (comp1)
  1585. {
  1586. echec=1;
  1587. printf("Vos deux rois seraient colles...\n");
  1588. }
  1589. e=xroi-1;
  1590. f=yroi+1;
  1591. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1592. if (comp1)
  1593. {
  1594. echec=1;
  1595. printf("Vos deux rois seraient colles...\n");
  1596. }
  1597. e=xroi-1;
  1598. f=yroi;
  1599. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1600. if (comp1)
  1601. {
  1602. echec=1;
  1603. printf("Vos deux rois seraient colles...\n");
  1604. }
  1605. e=xroi+1;
  1606. f=yroi;
  1607. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1608. if (comp1)
  1609. {
  1610. echec=1;
  1611. printf("Vos deux rois seraient colles...\n");
  1612. }
  1613. e=xroi+1;
  1614. f=yroi+1;
  1615. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1616. if (comp1)
  1617. {
  1618. echec=1;
  1619. printf("Vos deux rois seraient colles...\n");
  1620. }
  1621. e=xroi+1;
  1622. f=yroi-1;
  1623. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1624. if (comp1)
  1625. {
  1626. echec=1;
  1627. printf("Vos deux rois seraient colles...\n");
  1628. }
  1629. e=xroi;
  1630. f=yroi+1;
  1631. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1632. if (comp1)
  1633. {
  1634. echec=1;
  1635. printf("Vos deux rois seraient colles...\n");
  1636. }
  1637. e=xroi;
  1638. f=yroi-1;
  1639. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  1640. if (comp1)
  1641. {
  1642. echec=1;
  1643. printf("Vos deux rois seraient colles...\n");
  1644. }
  1645. e=xroi-1;
  1646. f=yroi;
  1647. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1648. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1649. if (comp2)
  1650. {
  1651. echec=1;
  1652. printf("Un echec detecte par une tour noire...\n");
  1653. }
  1654. while (e>-1 && comp1)
  1655. {
  1656. e--;
  1657. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1658. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1659. if (comp2)
  1660. {
  1661. echec=1;
  1662. printf("Un echec detecte par une tour noire...\n");
  1663. }
  1664. }
  1665. e=xroi;
  1666. f=yroi-1;
  1667. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1668. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1669. if (comp2)
  1670. {
  1671. echec=1;
  1672. printf("Un echec detecte par une tour noire...\n");
  1673. }
  1674. while (f>-1 && comp1)
  1675. {
  1676. f--;
  1677. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1678. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1679. if (comp2)
  1680. {
  1681. echec=1;
  1682. printf("Un echec detecte par une tour noire...\n");
  1683. }
  1684. }
  1685. e=xroi+1;
  1686. f=yroi;
  1687. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1688. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1689. if (comp2)
  1690. {
  1691. echec=1;
  1692. printf("Un echec detecte par une tour noire...\n");
  1693. }
  1694. while (e<8 && comp1)
  1695. {
  1696. e++;
  1697. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1698. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1699. if (comp2)
  1700. {
  1701. echec=1;
  1702. printf("Un echec detecte par une tour noire...\n");
  1703. }
  1704. }
  1705. e=xroi;
  1706. f=yroi+1;
  1707. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1708. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1709. if (comp2)
  1710. {
  1711. echec=1;
  1712. printf("Un echec detecte par une tour noire...\n");
  1713. }
  1714. while (f<8 && comp1)
  1715. {
  1716. f++;
  1717. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1718. comp2=(strcmp(plateau[e][f].nom_piece,"Tn")==0);
  1719. if (comp2)
  1720. {
  1721. echec=1;
  1722. printf("Un echec detecte par une tour noire...\n");
  1723. }
  1724. }
  1725. e=xroi-1;
  1726. f=yroi;
  1727. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1728. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1729. if (comp2)
  1730. {
  1731. echec=1;
  1732. printf("Un echec detecte par une dame noire...\n");
  1733. }
  1734. while (e>-1 && comp1)
  1735. {
  1736. e--;
  1737. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1738. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1739. if (comp2)
  1740. {
  1741. echec=1;
  1742. printf("Un echec detecte par une dame noire...\n");
  1743. }
  1744. }
  1745. e=xroi;
  1746. f=yroi-1;
  1747. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1748. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1749. if (comp2)
  1750. {
  1751. echec=1;
  1752. printf("Un echec detecte par une dame noire...\n");
  1753. }
  1754. while (f>-1 && comp1)
  1755. {
  1756. f--;
  1757. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1758. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1759. if (comp2)
  1760. {
  1761. echec=1;
  1762. printf("Un echec detecte par une dame noire...\n");
  1763. }
  1764. }
  1765. e=xroi+1;
  1766. f=yroi;
  1767. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1768. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1769. if (comp2)
  1770. {
  1771. echec=1;
  1772. printf("Un echec detecte par une dame noire...\n");
  1773. }
  1774. while (e<8 && comp1)
  1775. {
  1776. e++;
  1777. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1778. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1779. if (comp2)
  1780. {
  1781. echec=1;
  1782. printf("Un echec detecte par une dame noire...\n");
  1783. }
  1784. }
  1785. e=xroi;
  1786. f=yroi+1;
  1787. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1788. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1789. if (comp2)
  1790. {
  1791. echec=1;
  1792. printf("Un echec detecte par une dame noire...\n");
  1793. }
  1794. while (f<8 && comp1)
  1795. {
  1796. f++;
  1797. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1798. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1799. if (comp2)
  1800. {
  1801. echec=1;
  1802. printf("Un echec detecte par une dame noire...\n");
  1803. }
  1804. }
  1805. e=xroi+1;
  1806. f=yroi+1;
  1807. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1808. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1809. if (comp2)
  1810. {
  1811. echec=1;
  1812. printf("Un echec detecte par une dame noire...\n");
  1813. }
  1814. while (e<8 && f<8 && comp1)
  1815. {
  1816. e++;
  1817. f++;
  1818. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1819. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1820. if (comp2)
  1821. {
  1822. echec=1;
  1823. printf("Un echec detecte par une dame noire...\n");
  1824. }
  1825. }
  1826. e=xroi+1;
  1827. f=yroi-1;
  1828. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1829. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1830. if (comp2)
  1831. {
  1832. echec=1;
  1833. printf("Un echec detecte par une dame noire...\n");
  1834. }
  1835. while (e<8 && f>-1 && comp1)
  1836. {
  1837. e++;
  1838. f--;
  1839. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1840. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1841. if (comp2){
  1842. echec=1;
  1843. printf("Un echec detecte par une dame noire...\n");
  1844. }
  1845. }
  1846. e=xroi-1;
  1847. f=yroi+1;
  1848. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1849. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1850. if (comp2)
  1851. {
  1852. echec=1;
  1853. printf("Un echec detecte par une dame noire...\n");
  1854. }
  1855. while (e>-1 && f<8 && comp1)
  1856. {
  1857. e--;
  1858. f++;
  1859. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1860. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1861. if (comp2){
  1862. echec=1;
  1863. printf("Un echec detecte par une dame noire...\n");
  1864. }
  1865. }
  1866. e=xroi-1;
  1867. f=yroi-1;
  1868. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1869. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1870. if (comp2)
  1871. {
  1872. echec=1;
  1873. printf("Un echec detecte par une dame noire...\n");
  1874. }
  1875. while (e>-1 && f>-1 && comp1)
  1876. {
  1877. e--;
  1878. f--;
  1879. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1880. comp2=(strcmp(plateau[e][f].nom_piece,"Dn")==0);
  1881. if (comp2){
  1882. echec=1;
  1883. printf("Un echec detecte par une dame noire...\n");
  1884. }
  1885. }
  1886. e=xroi+1;
  1887. f=yroi+1;
  1888. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1889. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1890. if (comp2)
  1891. {
  1892. echec=1;
  1893. printf("Un echec detecte par un fou noir...\n");
  1894. }
  1895. while (e<8 && f<8 && comp1)
  1896. {
  1897. e++;
  1898. f++;
  1899. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1900. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1901. if (comp2)
  1902. {
  1903. echec=1;
  1904. printf("Un echec detecte par un fou noir...\n");
  1905. }
  1906. }
  1907. e=xroi+1;
  1908. f=yroi-1;
  1909. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1910. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1911. if (comp2)
  1912. {
  1913. echec=1;
  1914. printf("Un echec detecte par un fou noir...\n");
  1915. }
  1916. while (e<8 && f>-1 && comp1)
  1917. {
  1918. e++;
  1919. f--;
  1920. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1921. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1922. if (comp2)
  1923. {
  1924. echec=1;
  1925. printf("Un echec detecte par un fou noir...\n");
  1926. }
  1927. }
  1928. e=xroi-1;
  1929. f=yroi+1;
  1930. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1931. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1932. if (comp2)
  1933. {
  1934. echec=1;
  1935. printf("Un echec detecte par un fou noir...\n");
  1936. }
  1937. while (e>-1 && f<8 && comp1)
  1938. {
  1939. e--;
  1940. f++;
  1941. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1942. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1943. if (comp2)
  1944. {
  1945. echec=1;
  1946. printf("Un echec detecte par un fou noir...\n");
  1947. }
  1948. }
  1949. e=xroi-1;
  1950. f=yroi-1;
  1951. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1952. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1953. if (comp2)
  1954. {
  1955. echec=1;
  1956. printf("Un echec detecte par un fou noir...\n");
  1957. }
  1958. while (e>-1 && f>-1 && comp1)
  1959. {
  1960. e--;
  1961. f--;
  1962. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  1963. comp2=(strcmp(plateau[e][f].nom_piece,"Fn")==0);
  1964. if (comp2)
  1965. {
  1966. echec=1;
  1967. printf("Un echec detecte par un fou noir...\n");
  1968. }
  1969. }
  1970. return echec;
  1971. }
  1972.  
  1973. /*------------------------------------------------*/
  1974.  
  1975. int echecblanc()
  1976. {
  1977. int i, e, f, a, b, calcul, depart, echec=0, xroi, yroi, comp1, comp2;
  1978.  
  1979. for (a=0;a<8;a++)
  1980. {
  1981. for (b=0;b<8;b++)
  1982. {
  1983. if (plateau[a][b].nom_piece[0]==82)
  1984. {
  1985. if (plateau[a][b].nom_piece[1]==110)
  1986. {
  1987. xroi=a;
  1988. yroi=b;
  1989. break;
  1990. }
  1991. }
  1992. }
  1993. }
  1994. printf("Le roi noir est en(%d, %d)\n", xroi, yroi);
  1995. e=xroi-1;
  1996. f=yroi+1;
  1997. comp1=(strcmp(plateau[e][f].nom_piece,"pb")==0);
  1998. if (e>0 && f<7 && comp1)
  1999. {
  2000. echec=1;
  2001. printf("Un echec detecte par un pion blanc...\n");
  2002. }
  2003. e=xroi-1;
  2004. f=yroi-1;
  2005. comp1=(strcmp(plateau[e][f].nom_piece,"pb")==0);
  2006. if (e>0 && f>0 && comp1)
  2007. {
  2008. echec=1;
  2009. printf("Un echec detecte par un pion blanc...\n");
  2010. }
  2011. e=xroi+1;
  2012. f=yroi+2;
  2013. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2014. if (e<7 && f<6 && comp1)
  2015. {
  2016. echec=1;
  2017. printf("Un echec detecte par un cavalier blanc...\n");
  2018. }
  2019. e=xroi+1;
  2020. f=yroi-2;
  2021. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2022. if (e<7 && f>1 && comp1)
  2023. {
  2024. echec=1;
  2025. printf("Un echec detecte par un cavalier blanc...\n");
  2026. }
  2027. e=xroi-1;
  2028. f=yroi+2;
  2029. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2030. if (e>0 && f<6 && comp1)
  2031. {
  2032. echec=1;
  2033. printf("Un echec detecte par un cavalier blanc...\n");
  2034. }
  2035. e=xroi-1;
  2036. f=yroi-2;
  2037. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2038. if (e>0 && f>1 && comp1)
  2039. {
  2040. echec=1;
  2041. printf("Un echec detecte par un cavalier blanc...\n");
  2042. }
  2043. e=xroi+2;
  2044. f=yroi+1;
  2045. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2046. if (e<6 && f<7 && comp1)
  2047. {
  2048. echec=1;
  2049. printf("Un echec detecte par un cavalier blanc...\n");
  2050. }
  2051. e=xroi+2;
  2052. f=yroi-1;
  2053. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2054. if (e<6 && f>0 && comp1)
  2055. {
  2056. echec=1;
  2057. printf("Un echec detecte par un cavalier blanc...\n");
  2058. }
  2059. e=xroi-2;
  2060. f=yroi+1;
  2061. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2062. if (e>1 && f<7 && comp1)
  2063. {
  2064. echec=1;
  2065. printf("Un echec detecte par un cavalier blanc...\n");
  2066. }
  2067. e=xroi-2;
  2068. f=yroi-1;
  2069. comp1=(strcmp(plateau[e][f].nom_piece,"Cb")==0);
  2070. if (e>1 && f>0 && comp1)
  2071. {
  2072. echec=1;
  2073. printf("Un echec detecte par un cavalier blanc...\n");
  2074. }
  2075. e=xroi-1;
  2076. f=yroi-1;
  2077. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2078. if (comp1)
  2079. {
  2080. echec=1;
  2081. printf("Vos deux rois seraient colles...\n");
  2082. }
  2083. e=xroi-1;
  2084. f=yroi+1;
  2085. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2086. if (comp1)
  2087. {
  2088. echec=1;
  2089. printf("Vos deux rois seraient colles...\n");
  2090. }
  2091. e=xroi-1;
  2092. f=yroi;
  2093. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2094. if (comp1)
  2095. {
  2096. echec=1;
  2097. printf("Vos deux rois seraient colles...\n");
  2098. }
  2099. e=xroi+1;
  2100. f=yroi;
  2101. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2102. if (comp1)
  2103. {
  2104. echec=1;
  2105. printf("Vos deux rois seraient colles...\n");
  2106. }
  2107. e=xroi+1;
  2108. f=yroi+1;
  2109. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2110. if (comp1)
  2111. {
  2112. echec=1;
  2113. printf("Vos deux rois seraient colles...\n");
  2114. }
  2115. e=xroi+1;
  2116. f=yroi-1;
  2117. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2118. if (comp1)
  2119. {
  2120. echec=1;
  2121. printf("Vos deux rois seraient colles...\n");
  2122. }
  2123. e=xroi;
  2124. f=yroi+1;
  2125. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2126. if (comp1)
  2127. {
  2128. echec=1;
  2129. printf("Vos deux rois seraient colles...\n");
  2130. }
  2131. e=xroi;
  2132. f=yroi-1;
  2133. comp1=(strcmp(plateau[e][f].nom_piece,"Rn")==0);
  2134. if (comp1)
  2135. {
  2136. echec=1;
  2137. printf("Vos deux rois seraient colles...\n");
  2138. }
  2139. e=xroi-1;
  2140. f=yroi;
  2141. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2142. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2143. if (comp2)
  2144. {
  2145. echec=1;
  2146. printf("Un echec detecte par une tour blanche...\n");
  2147. }
  2148. while (e>-1 && comp1)
  2149. {
  2150. e--;
  2151. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2152. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2153. if (comp2)
  2154. {
  2155. echec=1;
  2156. printf("Un echec detecte par une tour blanche...\n");
  2157. }
  2158. }
  2159. e=xroi;
  2160. f=yroi-1;
  2161. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2162. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2163. if (comp2)
  2164. {
  2165. echec=1;
  2166. printf("Un echec detecte par une tour blanche...\n");
  2167. }
  2168. while (f>-1 && comp1)
  2169. {
  2170. f--;
  2171. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2172. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2173. if (comp2)
  2174. {
  2175. echec=1;
  2176. printf("Un echec detecte par une tour blanche...\n");
  2177. }
  2178. }
  2179. e=xroi+1;
  2180. f=yroi;
  2181. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2182. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2183. if (comp2)
  2184. {
  2185. echec=1;
  2186. printf("Un echec detecte par une tour blanche...\n");
  2187. }
  2188. while (e<8 && comp1)
  2189. {
  2190. e++;
  2191. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2192. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2193. if (comp2)
  2194. {
  2195. echec=1;
  2196. printf("Un echec detecte par une tour blanche...\n");
  2197. }
  2198. }
  2199. e=xroi;
  2200. f=yroi+1;
  2201. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2202. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2203. if (comp2)
  2204. {
  2205. echec=1;
  2206. printf("Un echec detecte par une tour blanche...\n");
  2207. }
  2208. while (f<8 && comp1)
  2209. {
  2210. f++;
  2211. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2212. comp2=(strcmp(plateau[e][f].nom_piece,"Tb")==0);
  2213. if (comp2)
  2214. {
  2215. echec=1;
  2216. printf("Un echec detecte par une tour blanche...\n");
  2217. }
  2218. }
  2219. e=xroi-1;
  2220. f=yroi;
  2221. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2222. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2223. if (comp2)
  2224. {
  2225. echec=1;
  2226. printf("Un echec detecte par une dame blanche...\n");
  2227. }
  2228. while (e>-1 && comp1)
  2229. {
  2230. e--;
  2231. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2232. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2233. if (comp2)
  2234. {
  2235. echec=1;
  2236. printf("Un echec detecte par une dame blanche...\n");
  2237. }
  2238. }
  2239. e=xroi;
  2240. f=yroi-1;
  2241. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2242. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2243. if (comp2)
  2244. {
  2245. echec=1;
  2246. printf("Un echec detecte par une dame blanche...\n");
  2247. }
  2248. while (f>-1 && comp1)
  2249. {
  2250. f--;
  2251. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2252. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2253. if (comp2)
  2254. {
  2255. echec=1;
  2256. printf("Un echec detecte par une dame blanche...\n");
  2257. }
  2258. }
  2259. e=xroi+1;
  2260. f=yroi;
  2261. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2262. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2263. if (comp2)
  2264. {
  2265. echec=1;
  2266. printf("Un echec detecte par une dame blanche...\n");
  2267. }
  2268. while (e<8 && comp1)
  2269. {
  2270. e++;
  2271. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2272. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2273. if (comp2)
  2274. {
  2275. echec=1;
  2276. printf("Un echec detecte par une dame blanche...\n");
  2277. }
  2278. }
  2279. e=xroi;
  2280. f=yroi+1;
  2281. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2282. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2283. if (comp2)
  2284. {
  2285. echec=1;
  2286. printf("Un echec detecte par une dame blanche...\n");
  2287. }
  2288. while (f<8 && comp1)
  2289. {
  2290. f++;
  2291. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2292. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2293. if (comp2)
  2294. {
  2295. echec=1;
  2296. printf("Un echec detecte par une dame blanche...\n");
  2297. }
  2298. }
  2299. e=xroi+1;
  2300. f=yroi+1;
  2301. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2302. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2303. if (comp2)
  2304. {
  2305. echec=1;
  2306. printf("Un echec detecte par une dame blanche...\n");
  2307. }
  2308. while (e<8 && f<8 && comp1)
  2309. {
  2310. e++;
  2311. f++;
  2312. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2313. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2314. if (comp2)
  2315. {
  2316. echec=1;
  2317. printf("Un echec detecte par une dame blanche...\n");
  2318. }
  2319. }
  2320. e=xroi+1;
  2321. f=yroi-1;
  2322. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2323. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2324. if (comp2)
  2325. {
  2326. echec=1;
  2327. printf("Un echec detecte par une dame blanche...\n");
  2328. }
  2329. while (e<8 && f>-1 && comp1)
  2330. {
  2331. e++;
  2332. f--;
  2333. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2334. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2335. if (comp2){
  2336. echec=1;
  2337. printf("Un echec detecte par une dame blanche...\n");
  2338. }
  2339. }
  2340. e=xroi-1;
  2341. f=yroi+1;
  2342. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2343. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2344. if (comp2)
  2345. {
  2346. echec=1;
  2347. printf("Un echec detecte par une dame blanche...\n");
  2348. }
  2349. while (e>-1 && f<8 && comp1)
  2350. {
  2351. e--;
  2352. f++;
  2353. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2354. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2355. if (comp2){
  2356. echec=1;
  2357. printf("Un echec detecte par une dame blanche...\n");
  2358. }
  2359. }
  2360. e=xroi-1;
  2361. f=yroi-1;
  2362. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2363. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2364. if (comp2)
  2365. {
  2366. echec=1;
  2367. printf("Un echec detecte par une dame blanche...\n");
  2368. }
  2369. while (e>-1 && f>-1 && comp1)
  2370. {
  2371. e--;
  2372. f--;
  2373. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2374. comp2=(strcmp(plateau[e][f].nom_piece,"Db")==0);
  2375. if (comp2){
  2376. echec=1;
  2377. printf("Un echec detecte par une dame blanche...\n");
  2378. }
  2379. }
  2380. e=xroi+1;
  2381. f=yroi+1;
  2382. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2383. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2384. if (comp2)
  2385. {
  2386. echec=1;
  2387. printf("Un echec detecte par un fou blanc...\n");
  2388. }
  2389. while (e<8 && f<8 && comp1)
  2390. {
  2391. e++;
  2392. f++;
  2393. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2394. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2395. if (comp2)
  2396. {
  2397. echec=1;
  2398. printf("Un echec detecte par un fou blanc...\n");
  2399. }
  2400. }
  2401. e=xroi+1;
  2402. f=yroi-1;
  2403. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2404. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2405. if (comp2)
  2406. {
  2407. echec=1;
  2408. printf("Un echec detecte par un fou blanc...\n");
  2409. }
  2410. while (e<8 && f>-1 && comp1)
  2411. {
  2412. e++;
  2413. f--;
  2414. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2415. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2416. if (comp2)
  2417. {
  2418. echec=1;
  2419. printf("Un echec detecte par un fou blanc...\n");
  2420. }
  2421. }
  2422. e=xroi-1;
  2423. f=yroi+1;
  2424. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2425. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2426. if (comp2)
  2427. {
  2428. echec=1;
  2429. printf("Un echec detecte par un fou blanc...\n");
  2430. }
  2431. while (e>-1 && f<8 && comp1)
  2432. {
  2433. e--;
  2434. f++;
  2435. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2436. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2437. if (comp2)
  2438. {
  2439. echec=1;
  2440. printf("Un echec detecte par un fou blanc...\n");
  2441. }
  2442. }
  2443. e=xroi-1;
  2444. f=yroi-1;
  2445. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2446. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2447. if (comp2)
  2448. {
  2449. echec=1;
  2450. printf("Un echec detecte par un fou blanc...\n");
  2451. }
  2452. while (e>-1 && f>-1 && comp1)
  2453. {
  2454. e--;
  2455. f--;
  2456. comp1=(strcmp(plateau[e][f].nom_piece," ")==0);
  2457. comp2=(strcmp(plateau[e][f].nom_piece,"Fb")==0);
  2458. if (comp2)
  2459. {
  2460. echec=1;
  2461. printf("Un echec detecte par un fou blanc...\n");
  2462. }
  2463. }
  2464. return echec;
  2465. }
  2466. /*------------------------------------------------*/
  2467.  
  2468. void chargement()
  2469. {
  2470. int retour, a=0, b=0, test2, coul, test1;
  2471. char nomfichier[50], chargement[3], chargement2[2], menu[3];
  2472. FILE *fic;
  2473. printf("Donnez le nom du fichier:\n");
  2474. scanf("%s", nomfichier);
  2475.  
  2476. fic=fopen(nomfichier,"r");
  2477. if (fic==NULL)
  2478. {
  2479. printf("Probleme d acces fichier %s\n", nomfichier);
  2480. test1=0;
  2481. while(!test1)
  2482. {
  2483. printf("Appuyez sur \"R\" pour revenir au menu!\n");
  2484. scanf("%s",menu);
  2485. if (menu[0]==82)
  2486. {
  2487. test1=1;
  2488. }
  2489. }
  2490. if (menu[0]==82)
  2491. {
  2492. main();
  2493. }
  2494. }
  2495. else
  2496. {
  2497. for( a=0; a<8; a++)
  2498. {
  2499. for (b=0; b<8; b++)
  2500. {
  2501. retour=fscanf(fic,"%s", chargement);
  2502. test2=strcmp(chargement, "00")==0;
  2503. if (test2)
  2504. {
  2505. strcpy(chargement, " ");
  2506. }
  2507. if(retour != EOF)
  2508. {
  2509. strcpy(plateau[a][b].nom_piece, chargement);
  2510. }
  2511. }
  2512. }
  2513. }
  2514. retour=fscanf(fic,"%s", chargement2);
  2515. fclose(fic);
  2516. printf("Echiquier charge\n", nomfichier);
  2517. coul=(strcmp(chargement2, "n")==0);
  2518. if (! coul)
  2519. {
  2520. c=1;
  2521. }
  2522. else
  2523. {
  2524. c=0;
  2525. }
  2526. affichage();
  2527. nouveaujeu();
  2528. }
  2529. /*------------------------------------------------*/
  2530. void sauvegarde()
  2531. {
  2532. int a, b, i=0, finligne=0, test1, test2, reste;
  2533. char couleur[2], menu[2], nomfichier[50];
  2534. FILE *fic;
  2535. printf("Nom de fichier?(sans extension)");
  2536. scanf("%s",nomfichier);
  2537. reste=c%2;
  2538. if (reste!=0)
  2539. {
  2540. strcpy(couleur, "n");
  2541. }
  2542. else
  2543. {
  2544. strcpy(couleur, "b");
  2545. }
  2546. fic=fopen(nomfichier, "w");
  2547. for( a=0; a<8; a++)
  2548. {
  2549. for (b=0; b<8; b++)
  2550. {
  2551. finligne++;
  2552. test1=strcmp(plateau[a][b].nom_piece, " ")==0;
  2553. if (test1)
  2554. {
  2555. strcpy(plateau[a][b].nom_piece, "00");
  2556. }
  2557. fprintf(fic,"%s\n", plateau[a][b].nom_piece);
  2558. if (finligne%8==0)
  2559. {
  2560. fprintf(fic,"\n");
  2561. }
  2562. }
  2563. }
  2564. fprintf(fic,"%s\n", couleur);
  2565. fclose (fic);
  2566. test2=0;
  2567. while(!test2)
  2568. {
  2569. printf("Echiquier sauvegarde, appuyez sur \"R\" pour revenir au
  2570. menu!\n");
  2571. scanf("%s",menu);
  2572. if (menu[0]==82)
  2573. {
  2574. test2=1;
  2575. }
  2576. }
  2577. if (menu[0]==82)
  2578. {
  2579. Option();
  2580. }
  2581. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement