Guest User

Untitled

a guest
May 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "graphdsu.h"
  4. #include <math.h>
  5. #include <time.h>
  6. #include <unistd.h>
  7. #include <string.h>
  8.  
  9. #define NBCOL 10 //Nombre de colonnes de la grille
  10. #define NBLIG 8 //Nom de lignes de la grille
  11. #define LARG 60 //Taille des cases en pixel
  12. #define NBCOUL 6 //Nombre de couleurs possibles par me
  13.  
  14. //Formes
  15. #define RECTANGLE 0
  16. #define CERCLE 1
  17. #define TRIANGLE 2
  18.  
  19. typedef struct Case Case;
  20. struct Case
  21. {
  22. int m_forme; /*valeur prise dans {0,1,2} */
  23. int m_couleur; /*valeur comprise entre 1 et NBCOUL*/
  24. int m_ligne; /*valeur comprise entre 1 et NBLIG */
  25. int m_colonne; /*valeur comprise entre 1 et NBCOL */
  26. };
  27.  
  28. typedef Case Grille[NBLIG][NBCOL];
  29.  
  30. void init_case(Case *Pcase); //Initialise la case
  31. void dessin_case(Case *Pcase,int Pcoul_fond); //Dessine la case
  32. void init_grille(Grille Pgrille); //Initialise la grille
  33. void copie_case(Case *Pcase_1, Case *Pcase_2); //Copie une case dans une autre
  34. void faire_tomber(Grille Pgrille, Case *Pcase_bas, int Phauteur); //Fait tomber les case
  35. int eliminer_sequence(Grille Pgrille, int Ppassage, int *Pnb_seq); //Elimine la séquence de cases
  36. int jouer(Grille Pgrille);
  37. void echange(Case *Pcase_1, Case *Pcase_2);
  38.  
  39. int recherche_seq_hori_forme(Grille Pgrille, Case *Pcase, Case** Pcase_gauche);
  40. int recherche_seq_hori_couleur(Grille Pgrille, Case *Pcase, Case** Pcase_gauche);
  41. int recherche_seq_verti_forme(Grille Pgrille, Case *Pcase, Case** Pcase_bas);
  42. int recherche_seq_verti_couleur(Grille Pgrille, Case *Pcase, Case** Pcase_bas);
  43.  
  44. int main()
  45. {
  46. srand(time(NULL));
  47. Grille grille_jeu;
  48. Initialiser(NBCOL * (LARG) + 300, NBLIG * (LARG));
  49. init_grille(grille_jeu);
  50. return 0;
  51. }
  52.  
  53. void init_case(Case *Pcase)
  54. {
  55. Pcase->m_forme = rand() % 3;
  56. int couleur;
  57. do {couleur = (rand() % 6);}while (couleur == 1);
  58. Pcase->m_couleur = couleur;
  59. }
  60.  
  61. void dessin_case(Case *Pcase, int Pcoul_fond)
  62. {
  63. int x0,y0,x1,y1;
  64. int x_centre,y_centre,r;
  65. int x2,y2,x3,y3;
  66. ChangeCouleur(Pcoul_fond);
  67. y0 = Pcase->m_ligne * LARG;
  68. x0 = Pcase->m_colonne * LARG;
  69. y1 = Pcase->m_ligne * LARG + LARG;
  70. x1 = Pcase->m_colonne * LARG + LARG;
  71. RectanglePlein(x0,y0,x1,y1);
  72. ChangeCouleur(Pcase->m_couleur);
  73.  
  74. switch(Pcase->m_forme)
  75. {
  76. case 0:
  77. x0 = x0 + 5;
  78. y0 = y0 + 5;
  79. x1 = x1 - 5;
  80. y1 = y1 - 5;
  81. RectanglePlein(x0,y0,x1,y1);
  82. break;
  83. case 1:
  84.  
  85. x_centre = x1 - (LARG / 2);
  86. y_centre = y1 - (LARG / 2);
  87. r = (LARG / 2) - 5;
  88. CerclePlein(x_centre, y_centre, r);
  89. break;
  90. case 2:
  91. x3 = x0 + 5;
  92. y3 = y0 + LARG - 5;
  93. x2 = x1 - 5;
  94. y2 = y1 - 5;
  95. y1 = y0 + 5;
  96. x1 = (x1 + x0) / 2;
  97. TrianglePlein(x3, y3, x1, y1, x2, y2);
  98. break;
  99. }
  100. }
  101.  
  102. void init_grille(Grille Pgrille)
  103. {
  104. int i,j;
  105. for(i = 0; i < NBLIG; i++)
  106. {
  107. for(j = 0; j < NBCOL; j++)
  108. {
  109. init_case(&Pgrille[i][j]);
  110. Pgrille[i][j].m_ligne = i;
  111. Pgrille[i][j].m_colonne = j;
  112. dessin_case(&Pgrille[i][j],1);
  113. }
  114. }
  115. }
  116.  
  117. int recherche_seq_hori_forme(Grille Pgrille, Case* Pcase, Case** Pcase_gauche)
  118. {
  119. int i;
  120. int longueur = 0;
  121. int longueur_droite = 0;
  122. int longueur_gauche = 0;
  123.  
  124. for (i = Pcase->m_colonne; i < NBCOL; i++)
  125. {
  126. if (Pgrille[Pcase->m_ligne][i].m_forme == Pgrille[Pcase->m_ligne][i+1].m_forme && (i+1 < NBCOL) && Pgrille[Pcase->m_ligne][i].m_forme == Pcase->m_forme)
  127. {
  128. longueur_droite++;
  129. }
  130. else
  131. {
  132. break;
  133. }
  134. }
  135. for (i = Pcase->m_colonne; i >= 0; i--)
  136. {
  137. if (Pgrille[Pcase->m_ligne][i].m_forme == Pgrille[Pcase->m_ligne][i-1].m_forme && (i-1 >= 0) && Pgrille[Pcase->m_ligne][i].m_forme == Pcase->m_forme)
  138. {
  139. longueur_gauche++;
  140. }
  141. else
  142. {
  143. break;
  144. }
  145. }
  146.  
  147. longueur = longueur_droite + longueur_gauche + 1;
  148. if (longueur < 5)
  149. {
  150. *Pcase_gauche = NULL;
  151. return 0;
  152. }
  153. else
  154. {
  155. *Pcase_gauche = &Pgrille[Pcase->m_ligne][i];
  156. return longueur;
  157. }
  158. }
  159.  
  160. int recherche_seq_hori_couleur(Grille Pgrille, Case* Pcase, Case** Pcase_gauche)
  161. {
  162. int i;
  163. int longueur = 0;
  164. int longueur_droite = 0;
  165. int longueur_gauche = 0;
  166.  
  167. for (i = Pcase->m_colonne; i < NBCOL; i++)
  168. {
  169. if (Pgrille[Pcase->m_ligne][i].m_couleur == Pgrille[Pcase->m_ligne][i+1].m_couleur && (i+1 < NBCOL) && Pgrille[Pcase->m_ligne][i].m_couleur == Pcase->m_couleur)
  170. {
  171. longueur_droite++;
  172. }
  173. else
  174. {
  175. break;
  176. }
  177. }
  178. for (i = Pcase->m_colonne; i >= 0; i--)
  179. {
  180. if (Pgrille[Pcase->m_ligne][i].m_couleur == Pgrille[Pcase->m_ligne][i-1].m_couleur && (i-1 >= 0) && Pgrille[Pcase->m_ligne][i].m_couleur == Pcase->m_couleur)
  181. {
  182. longueur_gauche++;
  183. }
  184. else
  185. {
  186. break;
  187. }
  188. }
  189. longueur = longueur_droite + longueur_gauche + 1;
  190. if (longueur < 3)
  191. {
  192. *Pcase_gauche = NULL;
  193. return 0;
  194. }
  195. else
  196. {
  197. *Pcase_gauche = &Pgrille[Pcase->m_ligne][i];
  198. return longueur;
  199. }
  200. }
  201.  
  202. int recherche_seq_verti_forme(Grille Pgrille, Case* Pcase, Case** Pcase_bas)
  203. {
  204. int i;
  205. int longueur = 0;
  206. int longueur_haut = 0;
  207. int longueur_bas = 0;
  208. for (i = Pcase->m_ligne; i >= 0; i--)
  209. {
  210. if (Pgrille[i][Pcase->m_colonne].m_forme == Pgrille[i-1][Pcase->m_colonne].m_forme && (i-1 >= 0) && Pgrille[i][Pcase->m_colonne].m_forme == Pcase->m_forme)
  211. {
  212. longueur_haut++;
  213. }
  214. else
  215. {
  216. break;
  217. }
  218. }
  219. for (i = Pcase->m_ligne; i < NBLIG; i++)
  220. {
  221. if (Pgrille[i][Pcase->m_colonne].m_forme == Pgrille[i+1][Pcase->m_colonne].m_forme && (i+1 < NBLIG) && Pgrille[i][Pcase->m_colonne].m_forme == Pcase->m_forme)
  222. {
  223. longueur_bas++;
  224. }
  225. else
  226. {
  227. break;
  228. }
  229. }
  230. longueur = longueur_bas + longueur_haut + 1;
  231. if (longueur < 5)
  232. {
  233. *Pcase_bas = NULL;
  234. return 0;
  235. }
  236. else
  237. {
  238. *Pcase_bas = &Pgrille[i][Pcase->m_colonne];
  239. return longueur;
  240. }
  241. }
  242.  
  243. int recherche_seq_verti_couleur(Grille Pgrille, Case* Pcase, Case** Pcase_bas)
  244. {
  245. int i;
  246. int longueur = 0;
  247. int longueur_haut = 0;
  248. int longueur_bas = 0;
  249. for (i = Pcase->m_ligne; i >= 0; i--)
  250. {
  251. if (Pgrille[i][Pcase->m_colonne].m_couleur == Pgrille[i-1][Pcase->m_colonne].m_couleur && (i-1 >= 0) && Pgrille[i][Pcase->m_colonne].m_couleur == Pcase->m_couleur)
  252. {
  253. longueur_haut++;
  254. }
  255. else
  256. {
  257. break;
  258. }
  259. }
  260. for (i = Pcase->m_ligne; i < NBLIG; i++)
  261. {
  262. if (Pgrille[i][Pcase->m_colonne].m_couleur == Pgrille[i+1][Pcase->m_colonne].m_couleur && (i+1 < NBLIG) && Pgrille[i][Pcase->m_colonne].m_couleur == Pcase->m_couleur)
  263. {
  264. longueur_bas++;
  265. }
  266. else
  267. {
  268. break;
  269. }
  270. }
  271. longueur = longueur_bas + longueur_haut + 1;
  272. if (longueur < 3)
  273. {
  274. *Pcase_bas = NULL;
  275. return 0;
  276. }
  277. else
  278. {
  279. *Pcase_bas = &Pgrille[i][Pcase->m_colonne];
  280. return longueur;
  281. }
  282. }
  283.  
  284. void copie_case(Case *Pcase_1, Case *Pcase_2)
  285. {
  286. /*
  287. int tmp1,tmp2;
  288. tmp1 = Pcase_1->m_forme;
  289. tmp2 = Pcase_1->m_couleur;
  290. Pcase_1->m_forme = Pcase_2->m_forme;
  291. Pcase_1->m_couleur = Pcase_2->m_couleur;
  292. Pcase_2->m_forme = tmp1;
  293. Pcase_2->m_couleur = tmp2;
  294. */
  295. *Pcase_1 = *Pcase_2;
  296. }
  297.  
  298.  
  299. int eliminer_sequence(Grille Pgrille, int Ppassage, int *Pnb_seq)
  300. {
  301. int i;
  302. int j;
  303. int k;
  304. int l = 0;
  305. int hauteur_forme;
  306. int hauteur_couleur;
  307. int hauteur_verticale_forme;
  308. int hauteur_verticale_couleur;
  309. int score = 0;
  310. int couleur;
  311. Case *case_bas;
  312.  
  313. for (i = 0; i < NBLIG; i++)
  314. {
  315. for (j = 0; j < NBCOL; j++)
  316. {
  317. hauteur_forme = recherche_seq_hori_forme(Pgrille,&Pgrille[i][j],&case_bas);
  318. if (hauteur_forme != 0)
  319. {
  320. if (Ppassage == 1)
  321. {
  322. for (l = case_bas->m_colonne; l < case_bas->m_colonne + hauteur_forme; l++)
  323. {
  324. dessin_case(&Pgrille[case_bas->m_ligne][l],0);
  325. }
  326. sleep(1);
  327. }
  328. for (l = case_bas->m_ligne; l >= 0; l--)
  329. {
  330. if (l != 0)
  331. {
  332. for (k = case_bas->m_colonne; k < (case_bas->m_colonne) + hauteur_forme; k++)
  333. {
  334. copie_case(&Pgrille[l][k],&Pgrille[l-1][k]);
  335. dessin_case(&Pgrille[l][k],1);
  336. }
  337. }
  338. else
  339. {
  340. for (k = case_bas->m_colonne; k < (case_bas->m_colonne) + hauteur_forme; k++)
  341. {
  342. Pgrille[l][k].m_forme=rand() % 3;
  343. do {couleur = (rand() % 6);}while (couleur == 1);
  344. Pgrille[l][k].m_couleur = couleur;
  345. dessin_case(&Pgrille[l][k],1);
  346. }
  347. }
  348. }
  349. score = score + hauteur_forme;
  350. (*Pnb_seq)++;
  351. i = 0;
  352. j = 0;
  353. }
  354.  
  355. hauteur_verticale_forme = recherche_seq_verti_forme(Pgrille,&Pgrille[i][j],&case_bas);
  356. if (hauteur_verticale_forme != 0)
  357. {
  358. if (Ppassage == 1)
  359. {
  360. for (l = case_bas->m_ligne; l < case_bas->m_ligne + hauteur_verticale_forme; l++)
  361. {
  362. dessin_case(&Pgrille[l][case_bas->m_colonne],0);
  363. }
  364. sleep(1);
  365. }
  366. for (k = case_bas->m_ligne + hauteur_verticale_forme-1; k >= 0; k--)
  367. {
  368. if ((k-hauteur_verticale_forme) >= 0)
  369. {
  370. copie_case(&Pgrille[k][case_bas->m_colonne],&Pgrille[k - hauteur_verticale_couleur][case_bas->m_colonne]);
  371. dessin_case(&Pgrille[k][case_bas->m_colonne],1);
  372. }
  373. else
  374. {
  375. Pgrille[k][case_bas->m_colonne].m_forme=rand()%3;
  376. do {couleur = (rand() % 6);}while (couleur == 1);
  377. Pgrille[l][k].m_couleur = couleur;
  378. dessin_case(&Pgrille[k][case_bas->m_colonne],1);
  379. }
  380. }
  381. score = score + hauteur_verticale_forme;
  382. (*Pnb_seq)++;
  383. i = 0;
  384. j = 0;
  385. }
  386.  
  387. hauteur_couleur = recherche_seq_hori_couleur(Pgrille,&Pgrille[i][j],&case_bas);
  388. if (hauteur_couleur != 0)
  389. {
  390. if (Ppassage == 1)
  391. {
  392. for (l = case_bas->m_colonne; l < case_bas->m_colonne+hauteur_couleur; l++)
  393. {
  394. dessin_case(&Pgrille[case_bas->m_ligne][l],0);
  395. }
  396. sleep(1);
  397. }
  398. for (l = (case_bas->m_ligne); l >= 0; l--)
  399. {
  400. if (l != 0)
  401. {
  402. for (k = case_bas->m_colonne; k < (case_bas->m_colonne)+hauteur_couleur; k++)
  403. {
  404. copie_case(&Pgrille[l][k],&Pgrille[l-1][k]);
  405. dessin_case(&Pgrille[l][k],1);
  406. }
  407. }
  408. else
  409. {
  410. for (k = case_bas->m_colonne; k < (case_bas->m_colonne) + hauteur_couleur; k++)
  411. {
  412. Pgrille[l][k].m_forme=rand()%3;
  413. do {couleur = (rand() % 6);}while (couleur == 1);
  414. Pgrille[l][k].m_couleur = couleur;
  415. dessin_case(&Pgrille[l][k],1);
  416. }
  417. }
  418. }
  419. score = score + hauteur_couleur;
  420. (*Pnb_seq)++;
  421. i = 0;
  422. j = 0;
  423. }
  424.  
  425. hauteur_verticale_couleur = recherche_seq_verti_couleur(Pgrille,&Pgrille[i][j],&case_bas);
  426. if (hauteur_verticale_couleur != 0)
  427. {
  428. if (Ppassage == 1)
  429. {
  430. for (l = case_bas->m_ligne; l < case_bas->m_ligne + hauteur_verticale_couleur; l++)
  431. {
  432. dessin_case(&Pgrille[l][case_bas->m_colonne],0);
  433. }
  434. sleep(1);
  435. }
  436. for (k = case_bas->m_ligne + hauteur_verticale_couleur-1; k >= 0; k--)
  437. {
  438. if ((k - hauteur_verticale_couleur) >= 0)
  439. {
  440. copie_case(&Pgrille[k][case_bas->m_colonne],&Pgrille[k-hauteur_verticale_couleur][case_bas->m_colonne]);
  441. dessin_case(&Pgrille[k][case_bas->m_colonne],1);
  442. }
  443. else
  444. {
  445. Pgrille[k][case_bas->m_colonne].m_forme=rand()%3;
  446. do {couleur = (rand() % 6);}while (couleur == 1);
  447. Pgrille[l][k].m_couleur = couleur;
  448. dessin_case(&Pgrille[k][case_bas->m_colonne],1);
  449. }
  450. }
  451. score = score + hauteur_verticale_couleur;
  452. (*Pnb_seq)++;
  453. i = 0;
  454. j = 0;
  455. }
  456. }
  457. }
  458. return score;
  459. }
  460.  
  461. int jouer(Grille Pgrille)
  462. {
  463. int fond = 1;
  464. int cpt_fond = 0;
  465. int x = 0;
  466. int y = 0;
  467. int temp_x = -1;
  468. int temp_y = -1;
  469. int x_fond;
  470. int y_fond;
  471. int passage = 0;
  472. int echange = 0;
  473. int point = 0;
  474. int nb_seq = 0;
  475. int temps = 10;
  476. int score = 0;
  477. int cpt = 1;
  478. int nb = 1;
  479. char point_score_1[100] = {0};
  480. char point_score_2[100] = {0};
  481. char point_score_3[100] = {0};
  482. char date_1[100] = {0};
  483. char date_2[100] = {0};
  484. char date_3[100] = {0};
  485. Case *case_bas;
  486. time_t t;
  487. char date_heure[64] = {0};
  488.  
  489. FILE* fichier = NULL;
  490. fichier = fopen("score.txt","r+");
  491. if (fichier == NULL)
  492. {
  493. fichier = fopen("score.txt", "w+");
  494. }
  495.  
  496. ChangerCouleur(0);
  497. date_1[0] = '\0';
  498. fscanf(fichier,"%[^;]",date_1);
  499.  
  500. if (strlen(date_1) != 0)
  501. {
  502. EcrireDessus(NBCOL * LARG+10,320,date_1);
  503. }
  504. point_score_1[0] = '\0';
  505. fscanf(fichier,";%[^;]",point_score_1);
  506.  
  507. if (strlen(point_score_1) != 0)
  508. {
  509. EcrireDessus(NBCOL * LARG+10,340,point_score_1);
  510. }
  511. date_2[0] = '\0';
  512. fscanf(fichier,";%[^;]",date_2);
  513.  
  514. if (strlen(date_2)!=0){
  515. EcrireDessus(NBCOL*LARG+10,360,date_2);
  516. }
  517. point_score_2[0] = '\0';
  518. fscanf(fichier,";%[^;]",point_score_2);
  519.  
  520. if (strlen(point_score_2) != 0)
  521. {
  522. EcrireDessus(NBCOL * LARG+10,380,point_score_2);
  523. }
  524. date_3[0] = '\0';
  525. fscanf(fichier,";%[^;]",date_3);
  526.  
  527. if (strlen(date_3) != 0)
  528. {
  529. EcrireDessus(NBCOL * LARG+10,400,date_3);
  530. }
  531. point_score_3[0] = '\0';
  532. fscanf(fichier,";%s",point_score_3);
  533.  
  534. if (strlen(point_score_3) != 0)
  535. {
  536. EcrireDessus(NBCOL * LARG+10,420,point_score_3);
  537. }
  538.  
  539. while(!(x > NBCOL * LARG- LARG && y > NBLIG * LARG - LARG))
  540. {
  541. if (temps == 0)
  542. {
  543. break;
  544. }
  545. else
  546. {
  547. timer(&temps);
  548. }
  549. echange = 0;
  550. if (passage == 0)
  551. {
  552. eliminer_sequence(Pgrille,passage,&nb_seq);
  553. nb_seq = 0;
  554. }
  555. else
  556. {
  557. if (cpt_fond == 0)
  558. {
  559. cpt_fond = 1;
  560. fond = 0;
  561. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  562. x_fond = (x/LARG)*LARG;
  563. y_fond = (y/LARG)*LARG;
  564. temp_x = x;
  565. temp_y = y;
  566. }
  567. else
  568. {
  569. AttendreClicXY(&x,&y);
  570. if ((x >= x_fond && x <= (x_fond + LARG)) && (y >= y_fond && y <= (y_fond + LARG)))
  571. {
  572. fond = 1;
  573. cpt_fond = 0;
  574. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  575. }
  576. else
  577. {
  578. fond = 0;
  579. if ((x / LARG == temp_x / LARG + 1 && y / LARG == temp_y / LARG) || (x / LARG == temp_x / LARG - 1 && y / LARG == temp_y / LARG) || (x / LARG == temp_x / LARG && y / LARG == temp_y / LARG - 1) || (x / LARG == temp_x / LARG && y / LARG == temp_y / LARG + 1))
  580. {
  581. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  582. dessin_case(&Pgrille[temp_y/LARG][temp_x/LARG],fond);
  583. sleep(1);
  584. echange(&Pgrille[y/LARG][x/LARG],&Pgrille[temp_y/LARG][temp_x/LARG]);
  585. fond = 0;
  586. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  587. dessin_case(&Pgrille[temp_y/LARG][temp_x/LARG],fond);
  588. sleep(1);
  589. echange = 1;
  590. cpt_fond = 0;
  591. fond = 1;
  592. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  593. dessin_case(&Pgrille[temp_y/LARG][temp_x/LARG],fond);
  594.  
  595. if (recherche_seq_verti_couleur(Pgrille,&Pgrille[y/LARG][x/LARG],&case_bas) == 0 && recherche_seq_hori_couleur(Pgrille,&Pgrille[y/LARG][x/LARG],&case_bas) == 0 && recherche_seq_hori_forme(Pgrille,&Pgrille[y/LARG][x/LARG],&case_bas) == 0 && recherche_seq_verti_forme(Pgrille,&Pgrille[y/LARG][x/LARG],&case_bas) == 0)
  596. {
  597. echange(&Pgrille[y/LARG][x/LARG],&Pgrille[temp_y/LARG][temp_x/LARG]);
  598. fond = 0;
  599. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  600. dessin_case(&Pgrille[temp_y/LARG][temp_x/LARG],fond);
  601. sleep(1);
  602. fond = 1;
  603. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  604. dessin_case(&Pgrille[temp_y/LARG][temp_x/LARG],fond);
  605. }
  606. }
  607. else
  608. {
  609. cpt_fond = 0;
  610. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  611. sleep(1);
  612. fond = 1;
  613. dessin_case(&Pgrille[y/LARG][x/LARG],fond);
  614. dessin_case(&Pgrille[y_fond/LARG][x_fond/LARG],fond);
  615. }
  616. }
  617. }
  618. {
  619. if ((cpt_fond != 0 || passage == 1) && echange == 1)
  620. sleep(1);
  621. point = eliminer_sequence(Pgrille,passage,&nb_seq) + point;
  622. menu(nb_seq * nb_seq * point * 100);
  623. score = nb_seq * nb_seq * point * 100 + score;
  624. nb_seq = 0;
  625. }
  626. temps--;
  627. }
  628. if (passage == 0)
  629. {
  630. passage = 1;
  631. }
  632. }
  633. fclose(fichier);
  634. fichier = fopen("score.txt","r+");
  635. while (score / nb >= 10)
  636. {
  637. nb = nb * 10;
  638. cpt++;
  639. }
  640. time(&t);
  641. strftime(date_heure,sizeof(date_heure),"%A %d %B %Y - %X",localtime(&t));
  642.  
  643. if (score > atoi(point_score_1))
  644. {
  645. if (strlen(point_score_2) != 0)
  646. {
  647. fprintf(fichier,"%s;%d;%s;%d;%s;%d",date_heure,score,date_1,atoi(point_score_1),date_2,atoi(point_score_2));
  648. }
  649. else if (strlen(point_score_1) != 0)
  650. {
  651. fprintf(fichier,"%s;%d;%s;%d;",date_heure,score,date_1,atoi(point_score_1));
  652. }
  653. else
  654. {
  655. fprintf(fichier,"%s;%d;",date_heure,score);
  656. }
  657. date_2[0] = '\0';
  658. fscanf(fichier,"%[^;]",date_2);
  659. }
  660. else if (score > atoi(point_score_2))
  661. {
  662. if (strlen(point_score_2) != 0)
  663. {
  664. fprintf(fichier,"%s;%d;%s;%d;%s;%d",date_1,atoi(point_score_1),date_heure,score,date_2,atoi(point_score_2));
  665. }
  666. else
  667. {
  668. fprintf(fichier,"%s;%d;%s;%d;",date_1,atoi(point_score_1),date_heure,score);
  669. }
  670. date_3[0] = '\0';
  671. fscanf(fichier,"%[^;]",date_3);
  672. }
  673. else if (score>atoi(point_score_3))
  674. {
  675. fprintf(fichier,"%s;%d;%s;%d;%s;%d",date_1,atoi(point_score_1),date_2,atoi(point_score_2),date_heure,score);
  676. }
  677. fclose(fichier);
  678. if (x > NBCOL * LARG + 300 - LARG && y > NBLIG * LARG - LARG)
  679. {
  680. return 0;
  681. }
  682. else
  683. {
  684. return 1;
  685. }
  686. }
  687.  
  688. void echange(Case *Pcase_1, Case *Pcase_2)
  689. {
  690. Case temp;
  691. temp.m_forme = Pcase_1->m_forme;
  692. temp.m_couleur = Pcase_1->m_couleur;
  693. Pcase_1->m_forme = Pcase_2->m_forme;
  694. Pcase_1->m_couleur = Pcase_2->m_couleur;
  695. Pcase_2->m_forme = temp.m_forme;
  696. Pcase_2->m_couleur = temp.m_couleur;
  697. }
Add Comment
Please, Sign In to add comment