diff --git a/Makefile b/Makefile index aa5cade..c9fad36 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ -Snake : main.o jeu.o grille.o menu.o obstacle.o pomme.o serpent.o timer.o - gcc -lgraph -o Snake main.o jeu.o grille.o menu.o obstacle.o pomme.o serpent.o timer.o +Snake : main.o jeu.o grille.o menu.o pomme.o serpent.o timer.o + gcc -lgraph -o Snake main.o jeu.o grille.o menu.o pomme.o serpent.o timer.o main.o : ./src/main.c ./include/main.h ./include/menu.h ./include/jeu.h gcc -ansi -pedantic -c ./src/main.c -jeu.o : ./src/jeu.c ./include/grille.h ./include/serpent.h ./include/pomme.h ./include/jeu.h ./include/menu.h ./include/timer.h ./include/obstacle.h +jeu.o : ./src/jeu.c ./include/grille.h ./include/serpent.h ./include/pomme.h ./include/jeu.h ./include/menu.h ./include/timer.h gcc -ansi -pedantic -c ./src/jeu.c @@ -17,10 +17,6 @@ menu.o : ./src/menu.c ./include/menu.h ./include/main.h gcc -ansi -pedantic -c ./src/menu.c -obstacle.o : ./src/obstacle.c ./include/grille.h ./include/serpent.h ./include/obstacle.h ./include/pomme.h - - gcc -ansi -pedantic -c ./src/obstacle.c - pomme.o : ./src/pomme.c ./include/grille.h ./include/serpent.h gcc -ansi -pedantic -c ./src/pomme.c @@ -34,6 +30,9 @@ timer.o : ./src/timer.c ./include/timer.h gcc -ansi -pedantic -c ./src/timer.c clean : - -rm -f main.o jeu.o grille.o menu.o obstacle.o pomme.o serpent.o timer.o + -rm -f main.o jeu.o grille.o menu.o pomme.o serpent.o timer.o + +run : + ./Snake .phony : clean \ No newline at end of file diff --git a/Snake b/Snake new file mode 100755 index 0000000..bdbe084 Binary files /dev/null and b/Snake differ diff --git a/include/obstacle.h b/include/obstacle.h deleted file mode 100644 index ea75509..0000000 --- a/include/obstacle.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef OBSTACLE_H -#define OBSTACLE_H - -#include "../include/grille.h" -#include "../include/serpent.h" - -typedef struct { - int x; - int y; -} Obstacle; - -void dessinerObstacle(Obstacle obstacle); -int estCollisionObstacle(Obstacle obstacle, Segment serpent[], int longueur); -Obstacle creerObstacle(int largeurGrille, int hauteurGrille); -void placerObstacle(Obstacle obstacles[], int nombreObstacles, int largeurGrille, int hauteurGrille); - -#endif /*OBSTACLE_H*/ diff --git a/include/pomme.h b/include/pomme.h index 765aadd..e877b54 100644 --- a/include/pomme.h +++ b/include/pomme.h @@ -10,7 +10,7 @@ typedef struct { } Pomme; Pomme creerPomme(); -void dessinerPomme(Pomme pomme); +void dessinerPomme(Pomme pomme,int id_pomme); int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur); #endif /*POMME_H*/ diff --git a/src/jeu.c b/src/jeu.c index 8418460..b6faf1c 100644 --- a/src/jeu.c +++ b/src/jeu.c @@ -7,7 +7,6 @@ #include "../include/jeu.h" #include "../include/menu.h" #include "../include/timer.h" -#include "../include/obstacle.h" void afficherScore(int score) { @@ -33,14 +32,16 @@ void lancer_jeu1(void) { char scoreStr[20]; Pomme pomme; int min, sec; + int id_pomme; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); + id_pomme=ChargerSprite("../img/pomme1.png"); pomme = creerPomme(); - dessinerPomme(pomme); + dessinerPomme(pomme,id_pomme); while (fin == 1) { update_timer(&min, &sec); @@ -51,7 +52,7 @@ void lancer_jeu1(void) { longueur++; score += 5; pomme = creerPomme(); - dessinerPomme(pomme); + dessinerPomme(pomme,id_pomme); } if (tuerSerpent(serpent, longueur)) { @@ -85,15 +86,17 @@ void lancer_jeu2(void) { char scoreStr[20]; Pomme pommes[5]; int min, sec; + int id_pomme; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); + id_pomme=ChargerSprite("../img/pomme1.png"); for (i = 0; i < 5; i++) { pommes[i] = creerPomme(); - dessinerPomme(pommes[i]); + dessinerPomme(pommes[i],id_pomme); } while (1) { @@ -105,7 +108,7 @@ void lancer_jeu2(void) { longueur++; score += 5; pommes[i] = creerPomme(); - dessinerPomme(pommes[i]); + dessinerPomme(pommes[i],id_pomme); } } @@ -141,14 +144,16 @@ void lancer_jeu4(void) { Pomme pomme; Segment serpent[100]; int min, sec; + int id_pomme; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); - + + id_pomme=ChargerSprite("../img/pomme1.png"); pomme = creerPomme(); - dessinerPomme(pomme); + dessinerPomme(pomme,id_pomme); while (1) { gestionDeplacements(serpent, &direction_x, &direction_y); @@ -158,7 +163,7 @@ void lancer_jeu4(void) { longueur++; score += 5; pomme = creerPomme(); - dessinerPomme(pomme); + dessinerPomme(pomme,id_pomme); /* Augmenter la vitesse à chaque pomme mangée*/ vitesse -= 5000; /* Réduire la durée d'attente (augmenter la vitesse)*/ @@ -185,67 +190,63 @@ void lancer_jeu4(void) { } void lancer_jeu3(void) { - int i,j; + int i; + Segment serpent[100]; int longueur = 10; int direction_x = 1; int direction_y = 0; + unsigned long int vitesse = 90000; /*vitesse de base*/ int score = 0; - unsigned long int vitesse = 100000; char scoreStr[20]; - Pomme pomme; - int nombreObstacles = 10; - Obstacle *obstacles = malloc(nombreObstacles * sizeof(Obstacle)); - Segment serpent[100]; + Pomme pommes[25]; int min, sec; + int id_pomme; + initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); - - pomme = creerPomme(); - dessinerPomme(pomme); - - placerObstacle(obstacles, nombreObstacles, LARGEUR_GRILLE, HAUTEUR_GRILLE); + id_pomme=ChargerSprite("../img/pomme1.png"); + for (i = 0; i < 25; i++) { + pommes[i] = creerPomme(); + dessinerPomme(pommes[i],id_pomme); + } while (1) { - gestionDeplacements(serpent, &direction_x, &direction_y); - mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); + gestionDeplacements(serpent, &direction_x, &direction_y); + mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); - if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { - longueur++; - score += 5; - pomme = creerPomme(); - dessinerPomme(pomme); + for (i = 0; i < 25; i++) { + if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) { + longueur++; + score += 5; + vitesse -=2500; + pommes[i] = creerPomme(); + dessinerPomme(pommes[i],id_pomme); + } + } - - vitesse -= 5000; - } + if (tuerSerpent(serpent, longueur)) { + int choixGameOver; + afficherMenuGameOver(); + afficher_seconde(sec); + afficher_minute(min); + afficherScore(score); + + /* Attend le choix du joueur après le game over */ + attendreChoixGameOver(); + return; + } + + dessinerSerpent(serpent, &longueur); - if (tuerSerpent(serpent, longueur)) { - int choixGameOver; - afficherMenuGameOver(); - afficher_seconde(sec); - afficher_minute(min); afficherScore(score); - /* Attend le choix du joueur après le game over */ - attendreChoixGameOver(); - return; + update_timer(&min, &sec); + + attendreSerpent(vitesse); /*Gère la vitesse*/ + + /*if (ToucheEnAttente() && Touche() == XK_Escape) { + return; + }*/ } - - - /*Dessiner le serpent et les obstacles*/ - dessinerSerpent(serpent, &longueur); - for (j = 0; j < nombreObstacles; j++) { - dessinerObstacle(obstacles[j]); - } - - afficherScore(score); - update_timer(&min, &sec); - - - /*Attendre en fonction de la vitesse actuelle*/ - attendreSerpent(vitesse); - -} -free(obstacles); -} +} \ No newline at end of file diff --git a/src/menu.c b/src/menu.c index 8851eec..de4a9f7 100644 --- a/src/menu.c +++ b/src/menu.c @@ -24,7 +24,7 @@ void afficherMenuModesDeJeu() { /* Affiche les boutons des modes de jeu */ afficherBouton(38.7, 639.9, 280.3, 742.9, "Classique", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2); afficherBouton(332.6, 639.9, 574.2, 742.9, "MultiPommes", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2); - afficherBouton(626.2, 639.9, 867.8, 742.9, "Obstacles", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2); + afficherBouton(626.2, 639.9, 867.8, 742.9, "Partie Rapide", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2); afficherBouton(919.7, 639.9, 1161.3, 742.9, "Acceleration", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2); } diff --git a/src/obstacle.c b/src/obstacle.c deleted file mode 100644 index a7fa73a..0000000 --- a/src/obstacle.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -#include -#include "../include/grille.h" -#include "../include/serpent.h" -#include "../include/obstacle.h" -#include "../include/pomme.h" - - - -void dessinerObstacle(Obstacle obstacle) { - int id_bombe; - id_bombe = ChargerSprite("../img/bombe.png"); - AfficherSprite(id_bombe,obstacle.x * TAILLE_CASE, obstacle.y * TAILLE_CASE); -} - -int estCollisionObstacle(Obstacle obstacle, Segment serpent[], int longueur) { - int i; - for (i = 0; i < longueur; i++) { - if (serpent[i].x == obstacle.x && serpent[i].y == obstacle.y) { - return 1; /*Collision avec un obstacle*/ - } - } - return 0; /*Pas de collision*/ -} - -Obstacle creerObstacle(int largeurGrille, int hauteurGrille) { - Obstacle obstacle; - obstacle.x = rand() % largeurGrille; - obstacle.y = rand() % hauteurGrille; - return obstacle; -} - -void placerObstacle(Obstacle obstacles[], int nombreObstacles, int largeurGrille, int hauteurGrille) { - int i; - for (i = 0; i < nombreObstacles; i++) { - obstacles[i] = creerObstacle(largeurGrille, hauteurGrille); - } -} - diff --git a/src/pomme.c b/src/pomme.c index f53e0d1..711a6ce 100644 --- a/src/pomme.c +++ b/src/pomme.c @@ -15,10 +15,8 @@ Pomme creerPomme() { return pomme; } -void dessinerPomme(Pomme pomme) { +void dessinerPomme(Pomme pomme,int id_pomme) { /* Affichez une pomme*/ - int id_pomme; - id_pomme = ChargerSprite("../img/pomme1.png"); AfficherSprite(id_pomme,pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE); } diff --git a/src/serpent.c b/src/serpent.c index b48a403..740bf75 100644 --- a/src/serpent.c +++ b/src/serpent.c @@ -37,9 +37,6 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y) } else if (touche == XK_Right && *direction_x == 0) { *direction_x = 1; *direction_y = 0; - } else if (touche == XK_Escape) { - FermerGraphique(); - main(); } else if (touche == XK_space) { pause(); } diff --git a/src/timer.c b/src/timer.c index 3842b7f..abe4ec1 100644 --- a/src/timer.c +++ b/src/timer.c @@ -74,9 +74,10 @@ void update_timer(int *min, int *sec) { } void pause(void) { - while (1) { + int pause=0; + while (pause==0) { if (ToucheEnAttente() && Touche() == XK_space) { - break; + pause=1; } } }