/* Ce programme sert au moment ou le joueur à passé l'interface et se met à jouer*/ #include #include #include #include "jeu.h" #include "partie_graphique.h" #define COTE_CARRE 150 #define ECART 5 #define MARGE 120 /*retourne le numéro de la carte aux coordonnées cliquées*/ void retournerCarte(int numCarte, int* cartes, int x, int y){ char nomCarte[25]; sprintf(nomCarte,"./images/image%d.png",cartes[numCarte]); ChargerImage(nomCarte,x,y,0,0,COTE_CARRE,COTE_CARRE); } /*cache la carte si on n'a pas retourné de paires*/ void cacherCarte(int carte,int** positions){ int x=positions[carte][0]; int y=positions[carte][1]; ChargerImage("./images/dos.png",x,y,10,75,COTE_CARRE,COTE_CARRE); } /*retourne 1 si il y a une paire, 0 sinon*/ int verifPaire(int carte1, int carte2, int* cartes){ int paire=0; if (cartes[carte1]==cartes[carte2]){ paire=1; } return paire; } /*joue*/ void jeu( int** positions, int* cartes, int colonnes, int lignes){ int* carteRetournees = (int*)malloc(sizeof(int)); int x; int y; int nbrPaires=(colonnes*lignes)/2; int boucle_jeu=1; int boucle_victoire; int dejaRetournee=0; int nbrCartesRetournees=0; int numCarte[2]; // tableau des deux cartes retournées numCarte[0]=-1; numCarte[1]=-2; int nbrCartes=0; int XpositionCarte; int YpositionCarte; unsigned long temps_ecoule = 0; unsigned long temps = Microsecondes(); int timer; int seconde_passee; int minutes = 0; int secondes = 0; int toucheT = 0; int temps_reference = 0; char afficher_temps[20]; int temps_cartes_visibles; int i; int j; int k; int l; while ((nbrPaires > 0)&&(boucle_jeu==1)){ //boucle while principale temps_ecoule = (int) (Microsecondes() - temps); /*timer*/ if (temps_reference 59){ minutes = secondes / 60; secondes = secondes - (minutes * 60); } ChoisirCouleurDessin(CouleurParNom("white")); RemplirRectangle(1000,25,130,30); ChoisirCouleurDessin(CouleurParNom("black")); snprintf(afficher_temps,20,"Time : %02d : %02d", minutes, secondes); EcrireTexte(1000,50,afficher_temps,1); } } if (ToucheEnAttente()){ //mode tricheurs if (Touche()== XK_t){ toucheT = 1; while (toucheT == 1){ /*montrer les cartes*/ for (i=0; i<(colonnes*lignes); i++){ retournerCarte(i, cartes, positions[i][0], positions[i][1]); } if (ToucheEnAttente()){ if (Touche()== XK_t){ /*cacher les cartes pas encore trouvées*/ afficherCartes(colonnes, lignes, positions); for (i=0;i1430 && x<1550 && y>20 && y<60){ boucle_jeu=quitter(boucle_jeu); } else{ for (i=0;i timer){ temps_ecoule = (int) (Microsecondes() - temps); if (temps_reference 59){ minutes = secondes / 60; secondes = secondes - (minutes * 60); } ChoisirCouleurDessin(CouleurParNom("white")); RemplirRectangle(1050,25,100,30); ChoisirCouleurDessin(CouleurParNom("black")); snprintf(afficher_temps,20,"Time : %02d : %02d", minutes, secondes); EcrireTexte(1000,50,afficher_temps,1); } } } cacherCarte(numCarte[0],positions); cacherCarte(numCarte[1],positions); } nbrCartes=0; numCarte[0]=-1; numCarte[1]=-2; } } } } } } } } } } } if (nbrPaires == 0){ boucle_victoire = 1; ChargerImageFond("./images/fond.jpg"); ChoisirCouleurDessin(CouleurParNom("white")); EcrireTexte(750,200,"BRAVO !!",2); snprintf(afficher_temps,20,"Time : %02d : %02d", minutes, secondes); EcrireTexte(750,300,afficher_temps,2); DessinerRectangle(750,400,250,60); EcrireTexte(765,445,"Retour menu",2); while( boucle_victoire == 1){ if(SourisCliquee()){ SourisPosition();/*récupère l'endroit du clic de la souris*/ x=_X; y=_Y; if (x>750 && x<1000 && y>400 && y<460){ boucle_victoire=quitter(boucle_victoire); } } } } free(carteRetournees); }