peer working TP dev lundi 11 décembre
This commit is contained in:
parent
30e54e4cd8
commit
909d4bfb7b
15
Makefile
15
Makefile
@ -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
|
@ -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*/
|
|
@ -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*/
|
||||||
|
105
src/jeu.c
105
src/jeu.c
@ -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)) {
|
||||||
|
int choixGameOver;
|
||||||
|
afficherMenuGameOver();
|
||||||
|
afficher_seconde(sec);
|
||||||
|
afficher_minute(min);
|
||||||
|
afficherScore(score);
|
||||||
|
|
||||||
vitesse -= 5000;
|
/* 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);
|
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user