peer working TP dev lundi 11 décembre

This commit is contained in:
stiti 2023-12-11 18:40:04 +01:00
parent 30e54e4cd8
commit 909d4bfb7b
10 changed files with 69 additions and 131 deletions

View File

@ -1,11 +1,11 @@
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 obstacle.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 main.o : ./src/main.c ./include/main.h ./include/menu.h ./include/jeu.h
gcc -ansi -pedantic -c ./src/main.c 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 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 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 pomme.o : ./src/pomme.c ./include/grille.h ./include/serpent.h
gcc -ansi -pedantic -c ./src/pomme.c 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 gcc -ansi -pedantic -c ./src/timer.c
clean : 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 .phony : clean

BIN
Snake Executable file

Binary file not shown.

View File

@ -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*/

View File

@ -10,7 +10,7 @@ typedef struct {
} Pomme; } Pomme;
Pomme creerPomme(); Pomme creerPomme();
void dessinerPomme(Pomme pomme); void dessinerPomme(Pomme pomme,int id_pomme);
int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur); int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur);
#endif /*POMME_H*/ #endif /*POMME_H*/

111
src/jeu.c
View File

@ -7,7 +7,6 @@
#include "../include/jeu.h" #include "../include/jeu.h"
#include "../include/menu.h" #include "../include/menu.h"
#include "../include/timer.h" #include "../include/timer.h"
#include "../include/obstacle.h"
void afficherScore(int score) { void afficherScore(int score) {
@ -33,14 +32,16 @@ void lancer_jeu1(void) {
char scoreStr[20]; char scoreStr[20];
Pomme pomme; Pomme pomme;
int min, sec; int min, sec;
int id_pomme;
initialiser_timer(&min, &sec); initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
id_pomme=ChargerSprite("../img/pomme1.png");
pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme,id_pomme);
while (fin == 1) { while (fin == 1) {
update_timer(&min, &sec); update_timer(&min, &sec);
@ -51,7 +52,7 @@ void lancer_jeu1(void) {
longueur++; longueur++;
score += 5; score += 5;
pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme,id_pomme);
} }
if (tuerSerpent(serpent, longueur)) { if (tuerSerpent(serpent, longueur)) {
@ -85,15 +86,17 @@ void lancer_jeu2(void) {
char scoreStr[20]; char scoreStr[20];
Pomme pommes[5]; Pomme pommes[5];
int min, sec; int min, sec;
int id_pomme;
initialiser_timer(&min, &sec); initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
id_pomme=ChargerSprite("../img/pomme1.png");
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
pommes[i] = creerPomme(); pommes[i] = creerPomme();
dessinerPomme(pommes[i]); dessinerPomme(pommes[i],id_pomme);
} }
while (1) { while (1) {
@ -105,7 +108,7 @@ void lancer_jeu2(void) {
longueur++; longueur++;
score += 5; score += 5;
pommes[i] = creerPomme(); pommes[i] = creerPomme();
dessinerPomme(pommes[i]); dessinerPomme(pommes[i],id_pomme);
} }
} }
@ -141,14 +144,16 @@ void lancer_jeu4(void) {
Pomme pomme; Pomme pomme;
Segment serpent[100]; Segment serpent[100];
int min, sec; int min, sec;
int id_pomme;
initialiser_timer(&min, &sec); initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
id_pomme=ChargerSprite("../img/pomme1.png");
pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme,id_pomme);
while (1) { while (1) {
gestionDeplacements(serpent, &direction_x, &direction_y); gestionDeplacements(serpent, &direction_x, &direction_y);
@ -158,7 +163,7 @@ void lancer_jeu4(void) {
longueur++; longueur++;
score += 5; score += 5;
pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme,id_pomme);
/* Augmenter la vitesse à chaque pomme mangée*/ /* Augmenter la vitesse à chaque pomme mangée*/
vitesse -= 5000; /* Réduire la durée d'attente (augmenter la vitesse)*/ vitesse -= 5000; /* Réduire la durée d'attente (augmenter la vitesse)*/
@ -185,67 +190,63 @@ void lancer_jeu4(void) {
} }
void lancer_jeu3(void) { void lancer_jeu3(void) {
int i,j; int i;
Segment serpent[100];
int longueur = 10; int longueur = 10;
int direction_x = 1; int direction_x = 1;
int direction_y = 0; int direction_y = 0;
unsigned long int vitesse = 90000; /*vitesse de base*/
int score = 0; int score = 0;
unsigned long int vitesse = 100000;
char scoreStr[20]; char scoreStr[20];
Pomme pomme; Pomme pommes[25];
int nombreObstacles = 10;
Obstacle *obstacles = malloc(nombreObstacles * sizeof(Obstacle));
Segment serpent[100];
int min, sec; int min, sec;
int id_pomme;
initialiser_timer(&min, &sec); initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
id_pomme=ChargerSprite("../img/pomme1.png");
pomme = creerPomme(); for (i = 0; i < 25; i++) {
dessinerPomme(pomme); pommes[i] = creerPomme();
dessinerPomme(pommes[i],id_pomme);
placerObstacle(obstacles, nombreObstacles, LARGEUR_GRILLE, HAUTEUR_GRILLE); }
while (1) { while (1) {
gestionDeplacements(serpent, &direction_x, &direction_y); gestionDeplacements(serpent, &direction_x, &direction_y);
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { for (i = 0; i < 25; i++) {
longueur++; if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
score += 5; longueur++;
pomme = creerPomme(); score += 5;
dessinerPomme(pomme); vitesse -=2500;
pommes[i] = creerPomme();
dessinerPomme(pommes[i],id_pomme);
}
}
if (tuerSerpent(serpent, longueur)) {
vitesse -= 5000; 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); afficherScore(score);
/* Attend le choix du joueur après le game over */ update_timer(&min, &sec);
attendreChoixGameOver();
return; 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);
}

View File

@ -24,7 +24,7 @@ void afficherMenuModesDeJeu() {
/* Affiche les boutons des modes de jeu */ /* 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(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(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); afficherBouton(919.7, 639.9, 1161.3, 742.9, "Acceleration", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2);
} }

View File

@ -1,41 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <graph.h>
#include <time.h>
#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);
}
}

View File

@ -15,10 +15,8 @@ Pomme creerPomme() {
return pomme; return pomme;
} }
void dessinerPomme(Pomme pomme) { void dessinerPomme(Pomme pomme,int id_pomme) {
/* Affichez une pomme*/ /* Affichez une pomme*/
int id_pomme;
id_pomme = ChargerSprite("../img/pomme1.png");
AfficherSprite(id_pomme,pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE); AfficherSprite(id_pomme,pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE);
} }

View File

@ -37,9 +37,6 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y)
} else if (touche == XK_Right && *direction_x == 0) { } else if (touche == XK_Right && *direction_x == 0) {
*direction_x = 1; *direction_x = 1;
*direction_y = 0; *direction_y = 0;
} else if (touche == XK_Escape) {
FermerGraphique();
main();
} else if (touche == XK_space) { } else if (touche == XK_space) {
pause(); pause();
} }

View File

@ -74,9 +74,10 @@ void update_timer(int *min, int *sec) {
} }
void pause(void) { void pause(void) {
while (1) { int pause=0;
while (pause==0) {
if (ToucheEnAttente() && Touche() == XK_space) { if (ToucheEnAttente() && Touche() == XK_space) {
break; pause=1;
} }
} }
} }