commit f87a3049588d4e1e5561948de646cfb51f223bf6 Author: LAFFEA DIDOT Loryne Date: Thu Apr 20 14:12:27 2023 +0200 projet de Memory en C diff --git a/Personnel/Dev/C/MEMORY/Makefile b/Personnel/Dev/C/MEMORY/Makefile new file mode 100644 index 0000000..fd8d0d9 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/Makefile @@ -0,0 +1,14 @@ +Memory.exe : main.o partie_graphique.o jeu.o cartes.o + gcc -o Memory.exe main.o partie_graphique.o jeu.o cartes.o -lgraph + +main.o : main.c cartes.h partie_graphique.h + gcc -c main.c -lgraph + +partie_graphique.o : partie_graphique.c partie_graphique.h jeu.h cartes.h + gcc -c partie_graphique.c -lgraph + +jeu.o : jeu.c jeu.h partie_graphique.h + gcc -c jeu.c -lgraph + +cartes.o : cartes.c cartes.h + gcc -c cartes.c -lgraph diff --git a/Personnel/Dev/C/MEMORY/Memory.exe b/Personnel/Dev/C/MEMORY/Memory.exe new file mode 100755 index 0000000..0a1cae4 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/Memory.exe differ diff --git a/Personnel/Dev/C/MEMORY/README.md b/Personnel/Dev/C/MEMORY/README.md new file mode 100644 index 0000000..fbb4dd8 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/README.md @@ -0,0 +1,2 @@ +# SAE1.1_DEV + diff --git a/Personnel/Dev/C/MEMORY/cartes.c b/Personnel/Dev/C/MEMORY/cartes.c new file mode 100644 index 0000000..353da87 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/cartes.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include "cartes.h" + +#define COTE_CARRE 150 +#define ECART 5 +#define MARGE 120 + +/*associe chaque carte à un numéro de tableau*/ +void remplirCartes(int* cartes){ + int i; + int j; + for (i=0, j=0 ;i<25;i++, j+=2){ + cartes[j]=i; + cartes[j+1]=i; + } +} + +/*associe des cartes aléatoires aux positions données*/ +void randomRemplir(int** positions, int colonnes, int lignes, int nbrCartes){ + srand(time(NULL)); + int i; + int j; + int k; + int* cartesUtilisees=(int*)malloc(sizeof(int)); + int taille=0; + int sortie; + int valeur; + int egalite; + for (i=0; i +#include +#include + +#define COTE_CARRE 150 +#define ECART 5 +#define MARGE 120 + + +void remplirCartes(int* cartes); +void randomRemplir(int** positions, int colonnes, int lignes, int nbrCartes); + +#endif diff --git a/Personnel/Dev/C/MEMORY/images/dos.png b/Personnel/Dev/C/MEMORY/images/dos.png new file mode 100644 index 0000000..f2e2d7a Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/dos.png differ diff --git a/Personnel/Dev/C/MEMORY/images/fond.jpg b/Personnel/Dev/C/MEMORY/images/fond.jpg new file mode 100644 index 0000000..69c3204 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/fond.jpg differ diff --git a/Personnel/Dev/C/MEMORY/images/image0.png b/Personnel/Dev/C/MEMORY/images/image0.png new file mode 100644 index 0000000..4828606 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image0.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image1.png b/Personnel/Dev/C/MEMORY/images/image1.png new file mode 100644 index 0000000..a003777 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image1.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image10.png b/Personnel/Dev/C/MEMORY/images/image10.png new file mode 100644 index 0000000..ee8fe0e Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image10.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image11.png b/Personnel/Dev/C/MEMORY/images/image11.png new file mode 100644 index 0000000..7c3d2ba Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image11.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image12.png b/Personnel/Dev/C/MEMORY/images/image12.png new file mode 100644 index 0000000..f9640e1 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image12.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image13.png b/Personnel/Dev/C/MEMORY/images/image13.png new file mode 100644 index 0000000..d47070a Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image13.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image14.png b/Personnel/Dev/C/MEMORY/images/image14.png new file mode 100644 index 0000000..11099ee Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image14.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image15.png b/Personnel/Dev/C/MEMORY/images/image15.png new file mode 100644 index 0000000..8ac2dd0 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image15.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image16.png b/Personnel/Dev/C/MEMORY/images/image16.png new file mode 100644 index 0000000..4c33335 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image16.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image17.png b/Personnel/Dev/C/MEMORY/images/image17.png new file mode 100644 index 0000000..28c79b8 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image17.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image18.png b/Personnel/Dev/C/MEMORY/images/image18.png new file mode 100644 index 0000000..c91a32c Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image18.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image19.png b/Personnel/Dev/C/MEMORY/images/image19.png new file mode 100644 index 0000000..1f283ea Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image19.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image2.png b/Personnel/Dev/C/MEMORY/images/image2.png new file mode 100644 index 0000000..93e94cc Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image2.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image20.png b/Personnel/Dev/C/MEMORY/images/image20.png new file mode 100644 index 0000000..3ab8516 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image20.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image21.png b/Personnel/Dev/C/MEMORY/images/image21.png new file mode 100644 index 0000000..d015f01 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image21.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image22.png b/Personnel/Dev/C/MEMORY/images/image22.png new file mode 100644 index 0000000..b57cadc Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image22.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image23.png b/Personnel/Dev/C/MEMORY/images/image23.png new file mode 100644 index 0000000..303210c Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image23.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image24.png b/Personnel/Dev/C/MEMORY/images/image24.png new file mode 100644 index 0000000..1ab2ef5 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image24.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image3.png b/Personnel/Dev/C/MEMORY/images/image3.png new file mode 100644 index 0000000..700b449 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image3.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image4.png b/Personnel/Dev/C/MEMORY/images/image4.png new file mode 100644 index 0000000..756e42e Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image4.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image5.png b/Personnel/Dev/C/MEMORY/images/image5.png new file mode 100644 index 0000000..091c44b Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image5.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image6.png b/Personnel/Dev/C/MEMORY/images/image6.png new file mode 100644 index 0000000..ea153a4 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image6.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image7.png b/Personnel/Dev/C/MEMORY/images/image7.png new file mode 100644 index 0000000..915a672 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image7.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image8.png b/Personnel/Dev/C/MEMORY/images/image8.png new file mode 100644 index 0000000..26b0123 Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image8.png differ diff --git a/Personnel/Dev/C/MEMORY/images/image9.png b/Personnel/Dev/C/MEMORY/images/image9.png new file mode 100644 index 0000000..445095e Binary files /dev/null and b/Personnel/Dev/C/MEMORY/images/image9.png differ diff --git a/Personnel/Dev/C/MEMORY/jeu.c b/Personnel/Dev/C/MEMORY/jeu.c new file mode 100644 index 0000000..9b65e41 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/jeu.c @@ -0,0 +1,215 @@ +/* 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); +} diff --git a/Personnel/Dev/C/MEMORY/jeu.h b/Personnel/Dev/C/MEMORY/jeu.h new file mode 100644 index 0000000..345c1e8 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/jeu.h @@ -0,0 +1,18 @@ +#ifndef JEU_H +#define JEU_H + +#include +#include +#include + +#define COTE_CARRE 150 +#define ECART 5 +#define MARGE 120 + +void retournerCarte(int numCarte, int* cartes, int x, int y); +void cacherCarte(int carte, int** positions); +int verifPaire(int carte1, int carte2, int* cartes); +void jeu(int** positions, int* cartes, int colonnes, int lignes); + + +#endif diff --git a/Personnel/Dev/C/MEMORY/main.c b/Personnel/Dev/C/MEMORY/main.c new file mode 100644 index 0000000..915719d --- /dev/null +++ b/Personnel/Dev/C/MEMORY/main.c @@ -0,0 +1,18 @@ +#include +#include +#include +#include "partie_graphique.h" +#include "cartes.h" + +int main (void){ //petite fonction qui se contente de définir les principales variable et d'appeler les fonctions principale + int i; + int cartes[50];//cartes va servir à associer chaque carte à un numéro + int** positions = (int**) malloc(50*sizeof(int*));// position associe chaque numéro à des coordonnées + for (i=0;i<50;i++){ + positions[i] = (int*) malloc(2*sizeof(int)); + } + remplirCartes(cartes); + partieGraphique(cartes,positions); + free(positions); + return EXIT_SUCCESS; +} diff --git a/Personnel/Dev/C/MEMORY/partie_graphique.c b/Personnel/Dev/C/MEMORY/partie_graphique.c new file mode 100644 index 0000000..dd48e67 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/partie_graphique.c @@ -0,0 +1,140 @@ +#include +#include +#include +#include "partie_graphique.h" +#include "jeu.h" +#include "cartes.h" + +#define COTE_CARRE 150 +#define ECART 5 +#define MARGE 120 + +int quitter(int boucle_jeu){ //retourne à l'écran d'accueil + boucle_jeu = 0; + ChargerImageFond("./images/fond.jpg"); + ChoisirCouleurDessin(CouleurParNom("white")); + EcrireTexte(300,200,"JEU DES PAIRES",2); + EcrireTexte(300,215,"-------------------------",2); + EcrireTexte(300,350,"- Niveau demo",2); + EcrireTexte(300,450,"- Niveau facile",2); + EcrireTexte(300,550,"- Niveau moyen",2); + EcrireTexte(300,650,"- Niveau difficile",2); + DessinerRectangle(1470,20,120,40); + EcrireTexte(1470,50,"Quitter le jeu",1); + return boucle_jeu; +} + +void afficherCartes(int colonnes, int lignes, int** positions){ // affiche toutes les cartes de dos selon le niveau de difficulté + int i; + int j; + for(i=MARGE; i<(colonnes*(COTE_CARRE+ECART)+MARGE); i+=COTE_CARRE+ECART){ + for(j=MARGE ; j<(lignes*(COTE_CARRE+ECART)+MARGE) ; j+=COTE_CARRE+ECART){ + ChargerImage("./images/dos.png",i,j,10,75,COTE_CARRE,COTE_CARRE); + } + } +} + +void mode_demo(int** positions, int* cartes){ + /*lancer le jeu en mode démo*/ + int colonnes=2; + int lignes=2; + ChargerImageFond("./images/fond.jpg"); + DessinerRectangle(1430,20,160,40); + EcrireTexte(1435,50,"Revenir au menu",1); + EcrireTexte(50,75,"Niveau demo",2); + afficherCartes(colonnes,lignes,positions); + randomRemplir(positions,colonnes,lignes,colonnes*lignes); + jeu(positions,cartes,colonnes,lignes); + +} + +void mode_facile(int** positions, int* cartes){ + /*lancer le jeu en mode facile*/ + int colonnes=4; + int lignes=3; + ChargerImageFond("./images/fond.jpg"); + DessinerRectangle(1430,20,160,40); + EcrireTexte(1435,50,"Revenir au menu",1); + EcrireTexte(50,75,"Niveau facile",2); + afficherCartes(colonnes,lignes,positions); + randomRemplir(positions,colonnes,lignes,colonnes*lignes); + jeu(positions,cartes,colonnes,lignes); +} + +void mode_moyen(int** positions, int* cartes){ + /*lancer le jeu en mode moyen*/ + int colonnes=6; + int lignes=5; + ChargerImageFond("./images/fond.jpg"); + DessinerRectangle(1430,20,160,40); + EcrireTexte(1435,50,"Revenir au menu",1); + EcrireTexte(50,75,"Niveau moyen",2); + afficherCartes(colonnes,lignes,positions); + randomRemplir(positions,colonnes,lignes,colonnes*lignes); + jeu(positions,cartes,colonnes,lignes); +} + +void mode_difficile(int** positions, int* cartes){ + /*lancer le jeu en mode difficile*/ + int colonnes=10; + int lignes=5; + ChargerImageFond("./images/fond.jpg"); + DessinerRectangle(1430,20,160,40); + EcrireTexte(1435,50,"Revenir au menu",1); + EcrireTexte(50,75,"Niveau difficile",2); + afficherCartes(colonnes,lignes,positions); + randomRemplir(positions,colonnes,lignes,colonnes*lignes); + jeu(positions,cartes,colonnes,lignes); + } + + + +void partieGraphique(int* cartes, int** positions){ /*fonction affichage du menu*/ + int x; + int y; + int boucle_menu = 1 ; + InitialiserGraphique(); + CreerFenetre(10,10,1920,1080); + + ChargerImageFond("./images/fond.jpg"); + ChoisirCouleurDessin(CouleurParNom("white")); + EcrireTexte(300,200,"JEU DES PAIRES",2); + EcrireTexte(300,215,"-------------------------",2); + EcrireTexte(300,350,"- Niveau demo",2); + EcrireTexte(300,450,"- Niveau facile",2); + EcrireTexte(300,550,"- Niveau moyen",2); + EcrireTexte(300,650,"- Niveau difficile",2); + DessinerRectangle(1470,20,120,40); + EcrireTexte(1470,50,"Quitter le jeu",1); + + while (boucle_menu == 1){ + if(SourisCliquee()){ + SourisPosition();/*récupère l'endroit où passe la souris*/ + x=_X; + y=_Y; + if (x>1470 && x<1590 && y>20 && y<60){ + boucle_menu = 0; + } + if (x>300 && x<600){ + if (y>300 && y<350){ + /*lancer le jeu en mode démo*/ + mode_demo(positions,cartes); + } + if (y>400 && y<450){ + /*lancer le jeu en mode facile*/ + mode_facile(positions,cartes); + } + if (y>500 && y<550){ + /*lancer le jeu en mode moyen*/ + mode_moyen(positions,cartes); + } + if (y>600 && y<650){ + /*lancer le jeu en mode difficile*/ + mode_difficile(positions,cartes); + } + } + } + } + FermerGraphique(); +} + diff --git a/Personnel/Dev/C/MEMORY/partie_graphique.h b/Personnel/Dev/C/MEMORY/partie_graphique.h new file mode 100644 index 0000000..cb7dbc5 --- /dev/null +++ b/Personnel/Dev/C/MEMORY/partie_graphique.h @@ -0,0 +1,20 @@ +#ifndef PARTIE_GRAPHIQUE +#define PARTIE_GRAPHIQUE + +#include +#include +#include + +#define COTE_CARRE 150 +#define ECART 5 +#define MARGE 120 + +int quitter(int boucle_jeu); +void afficherCartes(int colonnes, int lignes, int** positions); +void mode_demo(int** positions, int* cartes); +void mode_facile(int** positions, int* cartes); +void mode_moyen(int** positions, int* cartes); +void mode_difficile(int** positions, int* cartes); +void partieGraphique(int* cartes, int** positions); + +#endif