DerniÃers travaux, bug fix
This commit is contained in:
parent
a893a76ce6
commit
bb449b45a1
162
ChargerMode.c
Normal file
162
ChargerMode.c
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <graph.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ChargerMode.h"
|
||||||
|
|
||||||
|
int** CreerGrille(int* tab, int nbligne, int nbcolonne) {
|
||||||
|
/*Fonction qui permet de mélanger les cartes de façon aléatoire et les stocker dans un tableau 2D
|
||||||
|
Prend en argument un tableau, le nombre de ligne et colonne (nbligne*nbcolonne=longeur du tableau)
|
||||||
|
Renvoie un tableau 2D*/
|
||||||
|
srand(time(NULL));
|
||||||
|
int** grille = calloc(nbligne, sizeof(int*));
|
||||||
|
for (int c = 0; c < nbcolonne; c++) {
|
||||||
|
grille[c] = calloc(nbcolonne, sizeof(int));
|
||||||
|
}
|
||||||
|
int i;
|
||||||
|
int image;
|
||||||
|
int ligne;
|
||||||
|
int colonne;
|
||||||
|
int taille =(nbcolonne*nbligne)-1;
|
||||||
|
for (ligne=0;ligne<nbligne;ligne++) {
|
||||||
|
for (colonne=0;colonne<nbcolonne;colonne++) {
|
||||||
|
if (taille>=1) {
|
||||||
|
image=rand() % taille;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
image=0;
|
||||||
|
}
|
||||||
|
grille[ligne][colonne]=tab[image];
|
||||||
|
for (i=image;i<taille;i++) {
|
||||||
|
tab[i]=tab[i+1];
|
||||||
|
}
|
||||||
|
taille--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return grille;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CacherGrille(int** grille, int difficulte, int i, int f) {
|
||||||
|
/*Fonction qui dessine une grille de cartes de dos*/
|
||||||
|
int ligne;
|
||||||
|
int colonne;
|
||||||
|
int sprite;
|
||||||
|
if (difficulte==1) {
|
||||||
|
sprite=ChargerSprite("./images/wood2.png");
|
||||||
|
for (ligne=0;ligne<4;ligne++) {
|
||||||
|
for (colonne=0;colonne<4;colonne++) {
|
||||||
|
if (grille[ligne][colonne]!=0 && ((ligne!=i) || (colonne !=f))) {
|
||||||
|
AfficherSprite(sprite,422+(124*colonne),152+(124*ligne));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (difficulte==2) {
|
||||||
|
sprite=ChargerSprite("./images/wood2.png");
|
||||||
|
for (ligne=0;ligne<6;ligne++) {
|
||||||
|
for (colonne=0;colonne<6;colonne++) {
|
||||||
|
if (grille[ligne][colonne]!=0 && ((ligne!=i) || (colonne !=f))) {
|
||||||
|
AfficherSprite(sprite,308+(114*colonne),38+(114*ligne));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LibererSprite(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AfficherGrille(int** grille, int difficulte) {
|
||||||
|
/*Fonction qui dévoile tous les cartes, utile en mode tricheur*/
|
||||||
|
int ligne;
|
||||||
|
int colonne;
|
||||||
|
int image;
|
||||||
|
int sprite;
|
||||||
|
char str[50];
|
||||||
|
AfficherSprite(sprite,380,110);
|
||||||
|
if (difficulte==1) {
|
||||||
|
for (ligne=0;ligne<4;ligne++) {
|
||||||
|
for (colonne=0;colonne<4;colonne++) {
|
||||||
|
if (grille[ligne][colonne]!=0){
|
||||||
|
sprintf(str,"./images/%i.png", grille[ligne][colonne]);
|
||||||
|
sprite=ChargerSprite(str);
|
||||||
|
AfficherSprite(sprite,432+(124*colonne),162+(124*ligne));
|
||||||
|
LibererSprite(sprite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (difficulte==2) {
|
||||||
|
for (ligne=0;ligne<6;ligne++) {
|
||||||
|
for (colonne=0;colonne<6;colonne++) {
|
||||||
|
if (grille[ligne][colonne]!=0) {
|
||||||
|
sprintf(str,"./images/%i.png", grille[ligne][colonne]);
|
||||||
|
sprite=ChargerSprite(str);
|
||||||
|
AfficherSprite(sprite,318+(114*colonne),48+(114*ligne));
|
||||||
|
LibererSprite(sprite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int** ChargerFacile() {
|
||||||
|
/*Afficher la fenêtre de jeu facile*/
|
||||||
|
int sprite;
|
||||||
|
ChargerImageFond("./images/japanbg.png");
|
||||||
|
sprite=ChargerSprite("./images/wood3.png");
|
||||||
|
AfficherSprite(sprite,380,110);
|
||||||
|
LibererSprite(sprite);
|
||||||
|
int i;
|
||||||
|
int f;
|
||||||
|
int cpt=1;
|
||||||
|
char str[50];
|
||||||
|
int tab[16];
|
||||||
|
int** grille;
|
||||||
|
for (i=0; i<16; i=i+2) {
|
||||||
|
tab[i]=cpt;
|
||||||
|
tab[i+1]=cpt;
|
||||||
|
cpt+=1;
|
||||||
|
}
|
||||||
|
grille=CreerGrille(tab,4,4);
|
||||||
|
CacherGrille(grille, 1, -1, -1);
|
||||||
|
return grille;
|
||||||
|
}
|
||||||
|
|
||||||
|
int** ChargerMoyen() {
|
||||||
|
/*Afficher la fenêtre de jeu moyen*/
|
||||||
|
int sprite;
|
||||||
|
ChargerImageFond("./images/japanbg3.png");
|
||||||
|
sprite=ChargerSprite("./images/wood4.png");
|
||||||
|
AfficherSprite(sprite,265,10);
|
||||||
|
LibererSprite(sprite);
|
||||||
|
int i;
|
||||||
|
int f;
|
||||||
|
int cpt=1;
|
||||||
|
char str[50];
|
||||||
|
int tab[36];
|
||||||
|
int** grille;
|
||||||
|
for (i=0; i<36; i=i+2) {
|
||||||
|
tab[i]=cpt;
|
||||||
|
tab[i+1]=cpt;
|
||||||
|
cpt+=1;
|
||||||
|
}
|
||||||
|
grille=CreerGrille(tab,6,6);
|
||||||
|
CacherGrille(grille, 2, -1, -1);
|
||||||
|
return grille;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChargerMainMenu() {
|
||||||
|
/*Afficher la fenêtre menu*/
|
||||||
|
int panneau;
|
||||||
|
panneau=ChargerSprite("./images/scroll2.png");
|
||||||
|
ChargerImageFond("./images/japanbg4.jpg");
|
||||||
|
ChargerImage("./images/scroll.png",242,15,-0,-0,817,300);
|
||||||
|
ChargerImage("./images/matchpairs.png",350,77,-0,-0,598,54);
|
||||||
|
AfficherSprite(panneau,445,230);
|
||||||
|
ChargerImage("./images/easy.png",520,273,-0,-0,318,54);
|
||||||
|
AfficherSprite(panneau,445,400);
|
||||||
|
ChargerImage("./images/medium.png",503,446,-0,-0,334,54);
|
||||||
|
AfficherSprite(panneau,445,570);
|
||||||
|
ChargerImage("./images/soon.png",527,610,-0,-0,318,54);
|
||||||
|
ChargerImage("./images/boutonquitter.png",1250,15,-0,-0,30,30);
|
||||||
|
}
|
150
ChargerMode.h
150
ChargerMode.h
@ -1,144 +1,16 @@
|
|||||||
#include <stdlib.h>
|
#ifndef _CHARGERMODE_H
|
||||||
#include <graph.h>
|
#define _CHARGERMODE_H
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int** CreerGrille(int* tab, int nbligne, int nbcolonne) {
|
int** CreerGrille(int* tab, int nbligne, int nbcolonne);
|
||||||
/*Fonction qui permet de mélanger les cartes de façon aléatoire et les stocker dans un tableau 2D
|
|
||||||
Prend en argument un tableau, le nombre de ligne et colonne (nbligne*nbcolonne=longeur du tableau)
|
|
||||||
Renvoie un tableau 2D*/
|
|
||||||
srand(time(NULL));
|
|
||||||
int** grille = calloc(nbligne, sizeof(int*));
|
|
||||||
for (int c = 0; c < nbcolonne; c++) {
|
|
||||||
grille[c] = calloc(nbcolonne, sizeof(int));
|
|
||||||
}
|
|
||||||
int i;
|
|
||||||
int image;
|
|
||||||
int ligne;
|
|
||||||
int colonne;
|
|
||||||
int taille =(nbcolonne*nbligne)-1;
|
|
||||||
for (ligne=0;ligne<nbligne;ligne++) {
|
|
||||||
for (colonne=0;colonne<nbcolonne;colonne++) {
|
|
||||||
if (taille>=1) {
|
|
||||||
image=rand() % taille;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
image=0;
|
|
||||||
}
|
|
||||||
grille[ligne][colonne]=tab[image];
|
|
||||||
for (i=image;i<taille;i++) {
|
|
||||||
tab[i]=tab[i+1];
|
|
||||||
}
|
|
||||||
taille--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return grille;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CacherGrille(int** grille, int difficulte) {
|
void CacherGrille(int** grille, int difficulte, int i, int f);
|
||||||
/*Fonction qui dessine une grille de cartes de dos*/
|
|
||||||
int ligne;
|
|
||||||
int colonne;
|
|
||||||
int sprite;
|
|
||||||
if (difficulte==1) {
|
|
||||||
sprite=ChargerSprite("./images/wood2.png");
|
|
||||||
for (ligne=0;ligne<4;ligne++) {
|
|
||||||
for (colonne=0;colonne<4;colonne++) {
|
|
||||||
if (grille[ligne][colonne]!=0) {
|
|
||||||
AfficherSprite(sprite,422+(124*colonne),152+(124*ligne));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (difficulte==2) {
|
|
||||||
sprite=ChargerSprite("./images/wood2.png");
|
|
||||||
for (ligne=0;ligne<6;ligne++) {
|
|
||||||
for (colonne=0;colonne<6;colonne++) {
|
|
||||||
if (grille[ligne][colonne]!=0) {
|
|
||||||
AfficherSprite(sprite,308+(114*colonne),38+(114*ligne));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AfficherGrille(int** grille, int difficulte) {
|
void AfficherGrille(int** grille, int difficulte);
|
||||||
/*Fonction qui dévoile tous les cartes, utile en mode tricheur*/
|
|
||||||
int ligne;
|
|
||||||
int colonne;
|
|
||||||
int image;
|
|
||||||
int sprite;
|
|
||||||
char str[50];
|
|
||||||
AfficherSprite(sprite,380,110);
|
|
||||||
if (difficulte==1) {
|
|
||||||
for (ligne=0;ligne<4;ligne++) {
|
|
||||||
for (colonne=0;colonne<4;colonne++) {
|
|
||||||
if (grille[ligne][colonne]!=0){
|
|
||||||
sprintf(str,"./images/%i.png", grille[ligne][colonne]);
|
|
||||||
sprite=ChargerSprite(str);
|
|
||||||
AfficherSprite(sprite,432+(124*colonne),162+(124*ligne));
|
|
||||||
LibererSprite(sprite);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (difficulte==2) {
|
|
||||||
for (ligne=0;ligne<6;ligne++) {
|
|
||||||
for (colonne=0;colonne<6;colonne++) {
|
|
||||||
if (grille[ligne][colonne]!=0) {
|
|
||||||
sprintf(str,"./images/%i.png", grille[ligne][colonne]);
|
|
||||||
sprite=ChargerSprite(str);
|
|
||||||
AfficherSprite(sprite,308+(114*colonne),38+(114*ligne));
|
|
||||||
LibererSprite(sprite);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int** ChargerFacile() {
|
int** ChargerFacile();
|
||||||
/*Afficher la fenêtre de jeu facile*/
|
|
||||||
int sprite;
|
|
||||||
ChargerImageFond("./images/japanbg.png");
|
|
||||||
sprite=ChargerSprite("./images/wood3.png");
|
|
||||||
AfficherSprite(sprite,380,110);
|
|
||||||
LibererSprite(sprite);
|
|
||||||
int i;
|
|
||||||
int f;
|
|
||||||
int cpt=1;
|
|
||||||
char str[50];
|
|
||||||
int tab[16];
|
|
||||||
int** grille;
|
|
||||||
for (i=0; i<16; i=i+2) {
|
|
||||||
tab[i]=cpt;
|
|
||||||
tab[i+1]=cpt;
|
|
||||||
cpt+=1;
|
|
||||||
}
|
|
||||||
grille=CreerGrille(tab,4,4);
|
|
||||||
CacherGrille(grille, 1);
|
|
||||||
return grille;
|
|
||||||
}
|
|
||||||
|
|
||||||
int** ChargerMoyen() {
|
int** ChargerMoyen();
|
||||||
/*Afficher la fenêtre de jeu moyen*/
|
|
||||||
int sprite;
|
void ChargerMainMenu();
|
||||||
ChargerImageFond("./images/japanbg3.png");
|
|
||||||
sprite=ChargerSprite("./images/wood4.png");
|
#endif
|
||||||
AfficherSprite(sprite,265,10);
|
|
||||||
LibererSprite(sprite);
|
|
||||||
int i;
|
|
||||||
int f;
|
|
||||||
int cpt=1;
|
|
||||||
char str[50];
|
|
||||||
int tab[36];
|
|
||||||
int** grille;
|
|
||||||
for (i=0; i<36; i=i+2) {
|
|
||||||
tab[i]=cpt;
|
|
||||||
tab[i+1]=cpt;
|
|
||||||
cpt+=1;
|
|
||||||
}
|
|
||||||
grille=CreerGrille(tab,6,6);
|
|
||||||
CacherGrille(grille, 2);
|
|
||||||
return grille;
|
|
||||||
}
|
|
311
Jeu.c
Normal file
311
Jeu.c
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <graph.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include "ChargerMode.h"
|
||||||
|
#include "Jeu.h"
|
||||||
|
|
||||||
|
int jeutourne=1;
|
||||||
|
int ToucheT() {
|
||||||
|
int touche;
|
||||||
|
if (ToucheEnAttente()) {
|
||||||
|
touche= Touche();
|
||||||
|
if (touche== 84 || 114){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int compteur(int seconde) {
|
||||||
|
char temps[4];
|
||||||
|
unsigned long timer=Microsecondes()+delta;
|
||||||
|
if (Microsecondes()>=timer){
|
||||||
|
timer=Microsecondes()+delta;
|
||||||
|
seconde++;
|
||||||
|
}
|
||||||
|
return seconde;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tricher(int** grille, int difficulte, int i, int f) {
|
||||||
|
int touche, sprite;
|
||||||
|
int tempsdetriche=0;
|
||||||
|
int triche;
|
||||||
|
char str[50];
|
||||||
|
char temps[4];
|
||||||
|
unsigned long timer=Microsecondes()+delta;
|
||||||
|
AfficherGrille(grille, difficulte);
|
||||||
|
while (triche) {
|
||||||
|
if (Microsecondes()>=timer){
|
||||||
|
timer=Microsecondes()+delta;
|
||||||
|
tempsdetriche++;
|
||||||
|
}
|
||||||
|
if (ToucheEnAttente()) {
|
||||||
|
touche= Touche();
|
||||||
|
if (touche== 84 || 114){
|
||||||
|
CacherGrille(grille, difficulte, i, f);
|
||||||
|
triche=0;
|
||||||
|
return tempsdetriche;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tempsdetriche;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int GrilleComplete(int** grille, int l, int c) {
|
||||||
|
int i, f;
|
||||||
|
for (i=0; i<l; i++) {
|
||||||
|
for (f=0; f<c; f++) {
|
||||||
|
if (grille[i][f]!=0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ComparerCartes(int carte1, int carte2) {
|
||||||
|
if (carte1==carte2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int** DeuxiemeCarte(int ** grille, int carte,int nomCarte, int f, int i, int difficulte, int tempsdepart) {
|
||||||
|
int ligne, colonne;
|
||||||
|
int carte1=nomCarte, carte2,scroll;
|
||||||
|
int asec=1, seconde=0, tempsdetriche;
|
||||||
|
int deuxiemecarte=0;
|
||||||
|
unsigned long suivant;
|
||||||
|
unsigned long timer=time(NULL)+1;
|
||||||
|
char str[50], temps[4];
|
||||||
|
if (difficulte==1) {
|
||||||
|
while (!deuxiemecarte) {
|
||||||
|
if (ToucheT()) {
|
||||||
|
tempsdetriche=tricher(grille, difficulte, i, f);
|
||||||
|
tempsdepart+=tempsdetriche;
|
||||||
|
}
|
||||||
|
if (time(NULL)>=timer){
|
||||||
|
timer=time(NULL)+1;
|
||||||
|
seconde=time(NULL)-tempsdepart;
|
||||||
|
sprintf(temps,"%i",seconde);
|
||||||
|
scroll=ChargerSprite("./images/scroll3.png");
|
||||||
|
AfficherSprite(scroll,1200,15);
|
||||||
|
LibererSprite(scroll);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
||||||
|
EcrireTexte(1230,50,temps, 2);
|
||||||
|
}
|
||||||
|
if (SourisCliquee()) {
|
||||||
|
SourisPosition();
|
||||||
|
for (ligne=0; ligne<4; ligne++) {
|
||||||
|
for (colonne=0; colonne<4; colonne++) {
|
||||||
|
if (_X>422+(124*colonne) && _X<422+(124*colonne)+84
|
||||||
|
&& _Y>152+(124*ligne) && _Y < 152+(124*ligne)+84
|
||||||
|
&&(ligne!=i || colonne!=f)
|
||||||
|
&& grille[ligne][colonne]!=0)
|
||||||
|
{
|
||||||
|
carte2=grille[ligne][colonne];
|
||||||
|
sprintf(str,"./images/%i.png",grille[ligne][colonne]);
|
||||||
|
carte=ChargerSprite(str);
|
||||||
|
AfficherSprite(carte,432+(124*colonne),162+(124*ligne));
|
||||||
|
LibererSprite(carte);
|
||||||
|
if (!ComparerCartes(carte1,carte2)){
|
||||||
|
suivant=Microsecondes()+delta;
|
||||||
|
while(asec){
|
||||||
|
if (Microsecondes()>=suivant){
|
||||||
|
carte=ChargerSprite("./images/wood2.png");
|
||||||
|
AfficherSprite(carte,422+(124*f),152+(124*i));
|
||||||
|
AfficherSprite(carte,422+(124*colonne),152+(124*ligne));
|
||||||
|
LibererSprite(carte);
|
||||||
|
asec=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
grille[ligne][colonne]=0;
|
||||||
|
grille[i][f]=0;
|
||||||
|
}
|
||||||
|
deuxiemecarte=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} /*fin difficulté facile*/
|
||||||
|
else if (difficulte==2) {
|
||||||
|
while (!deuxiemecarte) {
|
||||||
|
if (ToucheT()) {
|
||||||
|
tempsdetriche=tricher(grille, difficulte, i, f);
|
||||||
|
tempsdepart+=tempsdetriche;
|
||||||
|
}
|
||||||
|
if (time(NULL)>=timer){
|
||||||
|
timer=time(NULL)+1;
|
||||||
|
seconde=time(NULL)-tempsdepart;
|
||||||
|
sprintf(temps,"%i",seconde);
|
||||||
|
scroll=ChargerSprite("./images/scroll3.png");
|
||||||
|
AfficherSprite(scroll,1200,15);
|
||||||
|
LibererSprite(scroll);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
||||||
|
EcrireTexte(1230,50,temps, 2);
|
||||||
|
}
|
||||||
|
if (SourisCliquee()) {
|
||||||
|
SourisPosition();
|
||||||
|
for (ligne=0; ligne<6; ligne++) {
|
||||||
|
for (colonne=0; colonne<6; colonne++) {
|
||||||
|
if (_X>308+(114*colonne) && _X<308+(114*colonne)+84
|
||||||
|
&& _Y>38+(114*ligne) && _Y < 38+(114*ligne)+84
|
||||||
|
&&(ligne!=i || colonne!=f)
|
||||||
|
&& grille[ligne][colonne]!=0)
|
||||||
|
{
|
||||||
|
carte2=grille[ligne][colonne];
|
||||||
|
sprintf(str,"./images/%i.png",grille[ligne][colonne]);
|
||||||
|
carte=ChargerSprite(str);
|
||||||
|
AfficherSprite(carte,318+(114*colonne),48+(114*ligne));
|
||||||
|
LibererSprite(carte);
|
||||||
|
if (!ComparerCartes(carte1,carte2)){
|
||||||
|
suivant=Microsecondes()+delta;
|
||||||
|
while(asec){
|
||||||
|
if (Microsecondes()>=suivant){
|
||||||
|
carte=ChargerSprite("./images/wood2.png");
|
||||||
|
AfficherSprite(carte,308+(114*f),38+(114*i));
|
||||||
|
AfficherSprite(carte,308+(114*colonne),38+(114*ligne));
|
||||||
|
LibererSprite(carte);
|
||||||
|
asec=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
grille[ligne][colonne]=0;
|
||||||
|
grille[i][f]=0;
|
||||||
|
}
|
||||||
|
deuxiemecarte=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return grille;
|
||||||
|
}
|
||||||
|
|
||||||
|
void * PremiereCarte(int** grille, int difficulte){
|
||||||
|
int i, f, carte, tempsdetriche=0, seconde=0, scroll;
|
||||||
|
unsigned long tempsdepart=time(NULL);
|
||||||
|
unsigned long timer=time(NULL)+1;
|
||||||
|
char str[50], temps[4];
|
||||||
|
if (difficulte==1) {
|
||||||
|
while (jeutourne) {
|
||||||
|
if (ToucheT()) {
|
||||||
|
tempsdetriche=tricher(grille, difficulte, -1, -1);
|
||||||
|
tempsdepart+=tempsdetriche;
|
||||||
|
}
|
||||||
|
if (time(NULL)>=timer){
|
||||||
|
timer=time(NULL)+1;
|
||||||
|
seconde=time(NULL)-tempsdepart;
|
||||||
|
sprintf(temps,"%i",seconde);
|
||||||
|
scroll=ChargerSprite("./images/scroll3.png");
|
||||||
|
AfficherSprite(scroll,1200,15);
|
||||||
|
LibererSprite(scroll);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
||||||
|
EcrireTexte(1230,50,temps, 2);
|
||||||
|
}
|
||||||
|
if (SourisCliquee()) {
|
||||||
|
SourisPosition();
|
||||||
|
for (i=0; i<4; i++) {
|
||||||
|
for (f=0; f<4; f++) {
|
||||||
|
if (_X>422+(124*f) && _X <422+(124*f)+84
|
||||||
|
&& _Y>152+(124*i) && _Y < 152+(124*i)+84
|
||||||
|
&& grille[i][f]!=0)
|
||||||
|
{
|
||||||
|
sprintf(str,"./images/%i.png",grille[i][f]);
|
||||||
|
carte=ChargerSprite(str);
|
||||||
|
AfficherSprite(carte,432+(124*f),162+(124*i));
|
||||||
|
LibererSprite(carte);
|
||||||
|
grille=DeuxiemeCarte(grille, carte, grille[i][f], f, i, difficulte, tempsdepart);
|
||||||
|
f=3;
|
||||||
|
i=3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (GrilleComplete(grille, 4, 4)) {
|
||||||
|
jeutourne=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (difficulte==2) {
|
||||||
|
while (jeutourne) {
|
||||||
|
if (ToucheT()) {
|
||||||
|
tempsdetriche=tricher(grille, difficulte, -1, -1);
|
||||||
|
tempsdepart+=tempsdetriche;
|
||||||
|
}
|
||||||
|
if (time(NULL)>=timer){
|
||||||
|
timer=time(NULL)+1;
|
||||||
|
seconde=time(NULL)-tempsdepart;
|
||||||
|
sprintf(temps,"%i",seconde);
|
||||||
|
scroll=ChargerSprite("./images/scroll3.png");
|
||||||
|
AfficherSprite(scroll,1200,15);
|
||||||
|
LibererSprite(scroll);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
||||||
|
EcrireTexte(1230,50,temps, 2);
|
||||||
|
}
|
||||||
|
if (SourisCliquee()) {
|
||||||
|
SourisPosition();
|
||||||
|
for (i=0; i<6; i++) {
|
||||||
|
for (f=0; f<6; f++) {
|
||||||
|
if (_X>308+(114*f) && _X <308+(114*f)+84
|
||||||
|
&& _Y>38+(114*i) && _Y < 38+(114*i)+84
|
||||||
|
&& grille[i][f]!=0)
|
||||||
|
{
|
||||||
|
sprintf(str,"./images/%i.png",grille[i][f]);
|
||||||
|
carte=ChargerSprite(str);
|
||||||
|
AfficherSprite(carte,318+(114*f),48+(114*i));
|
||||||
|
LibererSprite(carte);
|
||||||
|
grille=DeuxiemeCarte(grille, carte, grille[i][f], f, i, difficulte, tempsdepart);
|
||||||
|
f=5;
|
||||||
|
i=5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (GrilleComplete(grille, 6, 6)) {
|
||||||
|
jeutourne=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ChargerImageFond("./images/japanbg.png");
|
||||||
|
scroll=ChargerSprite("./images/scroll4.png");
|
||||||
|
AfficherSprite(scroll,242,30);
|
||||||
|
scroll=ChargerSprite("./images/congrat.png");
|
||||||
|
AfficherSprite(scroll,380,260);
|
||||||
|
sprintf(str,"You've finished in %i seconds",seconde);
|
||||||
|
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
||||||
|
EcrireTexte(480,345,str,2);
|
||||||
|
LibererSprite(scroll);
|
||||||
|
Touche();
|
||||||
|
}
|
||||||
|
void jeu(int** grille, int difficulte) {
|
||||||
|
PremiereCarte(grille, difficulte);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChargerDifficulte(int difficulte) {
|
||||||
|
/*Charge la difficulté choisi au menu principal*/
|
||||||
|
if (difficulte==1) {
|
||||||
|
int** grille=ChargerFacile();
|
||||||
|
jeu(grille, 1);
|
||||||
|
}
|
||||||
|
else if (difficulte=2) {
|
||||||
|
int** grille=ChargerMoyen();
|
||||||
|
jeu(grille, 2);
|
||||||
|
}
|
||||||
|
}
|
219
Jeu.h
219
Jeu.h
@ -1,216 +1,23 @@
|
|||||||
#include <stdlib.h>
|
#ifndef _JEU_H
|
||||||
#include <graph.h>
|
#define _JEU_H
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <pthread.h>
|
|
||||||
#include "ChargerMode.h"
|
|
||||||
#define delta 1000000L
|
#define delta 1000000L
|
||||||
|
|
||||||
int jeutourne=1;
|
int ToucheT();
|
||||||
|
|
||||||
int ToucheT() {
|
int compteur(int seconde);
|
||||||
int touche;
|
|
||||||
if (ToucheEnAttente()) {
|
|
||||||
touche= Touche();
|
|
||||||
if (touche== 84 || 114){
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int compteur(int seconde) {
|
|
||||||
char temps[4];
|
|
||||||
unsigned long timer=Microsecondes()+delta;
|
|
||||||
if (Microsecondes()>=timer){
|
|
||||||
timer=Microsecondes()+delta;
|
|
||||||
seconde++;
|
|
||||||
}
|
|
||||||
return seconde;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tricher(int** grille, int difficulte) {
|
int tricher(int** grille, int difficulte, int i, int f);
|
||||||
int touche;
|
|
||||||
int tempsdetriche=0;
|
|
||||||
int triche;
|
|
||||||
char temps[4];
|
|
||||||
unsigned long timer=Microsecondes()+delta;
|
|
||||||
AfficherGrille(grille, difficulte);
|
|
||||||
while (triche) {
|
|
||||||
if (Microsecondes()>=timer){
|
|
||||||
timer=Microsecondes()+delta;
|
|
||||||
tempsdetriche++;
|
|
||||||
}
|
|
||||||
if (ToucheEnAttente()) {
|
|
||||||
touche= Touche();
|
|
||||||
if (touche== 84 || 114){
|
|
||||||
CacherGrille(grille, difficulte);
|
|
||||||
triche=0;
|
|
||||||
return tempsdetriche;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tempsdetriche;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
int GrilleComplete(int** grille, int l, int c);
|
||||||
|
|
||||||
int GrilleComplete(int** grille, int l, int c) {
|
int ComparerCartes(int carte1, int carte2);
|
||||||
int i, f;
|
|
||||||
for (i=0; i<l; i++) {
|
|
||||||
for (f=0; f<c; f++) {
|
|
||||||
if (grille[i][f]!=0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ComparerCartes(int carte1, int carte2) {
|
int** DeuxiemeCarte(int ** grille, int carte,int nomCarte, int f, int i, int difficulte, int tempsdepart);
|
||||||
if (carte1==carte2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int** DeuxiemeCarte(int ** grille, int carte,int nomCarte, int f, int i, int difficulte, int tempsdepart) {
|
void * PremiereCarte(int** grille, int difficulte);
|
||||||
int ligne, colonne;
|
|
||||||
int carte1=nomCarte, carte2,scroll;
|
|
||||||
int asec=1, seconde=0, tempsdetriche;
|
|
||||||
int deuxiemecarte=0;
|
|
||||||
unsigned long suivant;
|
|
||||||
unsigned long timer=time(NULL)+1;
|
|
||||||
char str[50], temps[4];
|
|
||||||
if (difficulte==1) {
|
|
||||||
while (!deuxiemecarte) {
|
|
||||||
if (ToucheT()) {
|
|
||||||
tempsdetriche=tricher(grille, difficulte);
|
|
||||||
tempsdepart+=tempsdetriche;
|
|
||||||
}
|
|
||||||
if (time(NULL)>=timer){
|
|
||||||
timer=time(NULL)+1;
|
|
||||||
seconde=time(NULL)-tempsdepart;
|
|
||||||
sprintf(temps,"%i",seconde);
|
|
||||||
scroll=ChargerSprite("./images/scroll3.png");
|
|
||||||
AfficherSprite(scroll,1200,15);
|
|
||||||
LibererSprite(scroll);
|
|
||||||
ChoisirCouleurDessin(CouleurParNom("black"));
|
|
||||||
EcrireTexte(1230,50,temps, 2);
|
|
||||||
}
|
|
||||||
if (SourisCliquee()) {
|
|
||||||
SourisPosition();
|
|
||||||
for (ligne=0; ligne<4; ligne++) {
|
|
||||||
for (colonne=0; colonne<4; colonne++) {
|
|
||||||
if (_X>422+(124*colonne) && _X<422+(124*colonne)+84
|
|
||||||
&& _Y>152+(124*ligne) && _Y < 152+(124*ligne)+84
|
|
||||||
&&(ligne!=i || colonne!=f)
|
|
||||||
&& grille[ligne][colonne]!=0)
|
|
||||||
{
|
|
||||||
carte2=grille[ligne][colonne];
|
|
||||||
sprintf(str,"./images/%i.png",grille[ligne][colonne]);
|
|
||||||
carte=ChargerSprite(str);
|
|
||||||
AfficherSprite(carte,432+(124*colonne),162+(124*ligne));
|
|
||||||
LibererSprite(carte);
|
|
||||||
if (!ComparerCartes(carte1,carte2)){
|
|
||||||
suivant=Microsecondes()+delta;
|
|
||||||
while(asec){
|
|
||||||
if (Microsecondes()>=suivant){
|
|
||||||
carte=ChargerSprite("./images/wood2.png");
|
|
||||||
AfficherSprite(carte,422+(124*f),152+(124*i));
|
|
||||||
AfficherSprite(carte,422+(124*colonne),152+(124*ligne));
|
|
||||||
LibererSprite(carte);
|
|
||||||
asec=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
grille[ligne][colonne]=0;
|
|
||||||
grille[i][f]=0;
|
|
||||||
}
|
|
||||||
deuxiemecarte=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return grille;
|
|
||||||
}
|
|
||||||
|
|
||||||
void * PremiereCarte(int** grille, int difficulte){
|
void jeu(int** grille, int difficulte);
|
||||||
int i, f, carte, tempsdetriche=0, seconde=0, scroll;
|
|
||||||
unsigned long tempsdepart=time(NULL);
|
|
||||||
unsigned long timer=time(NULL)+1;
|
|
||||||
char str[50], temps[4];
|
|
||||||
if (difficulte==1) {
|
|
||||||
while (jeutourne) {
|
|
||||||
if (ToucheT()) {
|
|
||||||
tempsdetriche=tricher(grille, difficulte);
|
|
||||||
tempsdepart+=tempsdetriche;
|
|
||||||
}
|
|
||||||
if (time(NULL)>=timer){
|
|
||||||
timer=time(NULL)+1;
|
|
||||||
seconde=time(NULL)-tempsdepart;
|
|
||||||
sprintf(temps,"%i",seconde);
|
|
||||||
scroll=ChargerSprite("./images/scroll3.png");
|
|
||||||
AfficherSprite(scroll,1200,15);
|
|
||||||
LibererSprite(scroll);
|
|
||||||
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
|
||||||
EcrireTexte(1230,50,temps, 2);
|
|
||||||
}
|
|
||||||
if (SourisCliquee()) {
|
|
||||||
SourisPosition();
|
|
||||||
for (i=0; i<4; i++) {
|
|
||||||
for (f=0; f<4; f++) {
|
|
||||||
if (_X>422+(124*f) && _X <422+(124*f)+84
|
|
||||||
&& _Y>152+(124*i) && _Y < 152+(124*i)+84
|
|
||||||
&& grille[i][f]!=0)
|
|
||||||
{
|
|
||||||
sprintf(str,"./images/%i.png",grille[i][f]);
|
|
||||||
carte=ChargerSprite(str);
|
|
||||||
AfficherSprite(carte,432+(124*f),162+(124*i));
|
|
||||||
LibererSprite(carte);
|
|
||||||
grille=DeuxiemeCarte(grille, carte, grille[i][f], f, i, difficulte, tempsdepart);
|
|
||||||
f=3;
|
|
||||||
i=3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (GrilleComplete(grille, 4, 4)) {
|
|
||||||
jeutourne=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
ChargerImageFond("./images/japanbg.png");
|
|
||||||
scroll=ChargerSprite("./images/scroll4.png");
|
|
||||||
AfficherSprite(scroll,242,30);
|
|
||||||
scroll=ChargerSprite("./images/congrat.png");
|
|
||||||
AfficherSprite(scroll,380,260);
|
|
||||||
sprintf(str,"You've finished in %i seconds",seconde);
|
|
||||||
ChoisirCouleurDessin(CouleurParComposante(224,36,28));
|
|
||||||
EcrireTexte(480,345,str,2);
|
|
||||||
LibererSprite(scroll);
|
|
||||||
Touche();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void jeu(int** grille, int difficulte) {
|
|
||||||
PremiereCarte(grille, difficulte);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ChargerDifficulte(int difficulte) {
|
void ChargerDifficulte(int difficulte);
|
||||||
/*Charge la difficulté choisi au menu principal*/
|
|
||||||
if (difficulte==1) {
|
#endif
|
||||||
int** grille=ChargerFacile();
|
|
||||||
jeu(grille, 1);
|
|
||||||
}
|
|
||||||
else if (difficulte=2) {
|
|
||||||
int** grille=ChargerMoyen();
|
|
||||||
jeu(grille, 2);
|
|
||||||
}
|
|
||||||
}
|
|
BIN
images/hard.png
BIN
images/hard.png
Binary file not shown.
Before ![]() (image error) Size: 8.7 KiB |
BIN
images/soon.png
Normal file
BIN
images/soon.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 6.0 KiB |
Loading…
x
Reference in New Issue
Block a user