update jeu.c/jeu.h

This commit is contained in:
Marco ORFAO 2023-12-07 09:13:31 +01:00
parent 6142887a47
commit 4e1a6be5b3
2 changed files with 207 additions and 13 deletions

View File

@ -1,6 +1,11 @@
#ifndef JEU_H #ifndef JEU_H
#define JEU_H #define JEU_H
void lancer_jeu1(void); void lancer_jeu1(void);
void lancer_jeu2(void);
void lancer_jeu3(void);
void lancer_jeu4(void);
#endif /*JEU_H*/ #endif /*JEU_H*/

215
src/jeu.c
View File

@ -1,27 +1,34 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <graph.h> #include <graph.h>
#include <unistd.h> #include <time.h>
#include "../include/grille.h" #include "../include/grille.h"
#include "../include/serpent.h" #include "../include/serpent.h"
#include "../include/pomme.h" #include "../include/pomme.h"
#include "../include/jeu.h" #include "../include/jeu.h"
#include "../include/menu.h"
void lancer_jeu1(void) { void lancer_jeu1(void) {
Segment serpent[100]; Segment serpent[100];
int longueur = 5; int longueur = 10;
int direction_x = 1; int direction_x = 1;
int direction_y = 0; int direction_y = 0;
int i; int score = 0;
char scoreStr[20];
Pomme pomme;
FermerGraphique();
InitialiserGraphique(); InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000); CreerFenetre(0, 0, 1200, 1000);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); /*Dessiner la grille*/ dessinerGrille();
Pomme pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme);
while (1) { while (1) {
gestionDeplacements(serpent, &direction_x, &direction_y); gestionDeplacements(serpent, &direction_x, &direction_y);
@ -29,17 +36,199 @@ void lancer_jeu1(void) {
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) {
longueur++; longueur++;
pomme = creerPomme(); /*Générer une pomme*/ score += 5;
pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme);
} }
if (tuerSerpent(serpent) || seMangerQueue(serpent, longueur)) { if (tuerSerpent(serpent, longueur)) {
/*Si le serpent est mort, gestion du game over* int choixGameOver;
/*Ajoutez ici menu game over*/ afficherMenuGameOver();
/*ChargerImageFond("../img/game_over.png");*/
/* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver();
}
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 40);
/* Convertit le score en chaîne de caractères */
snprintf(scoreStr, sizeof(scoreStr), "%d", score);
/* Affiche le nouveau score */
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
EcrireTexte(178, 976, scoreStr, 2);
struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/
nanosleep(&delai, NULL);
}
}
void lancer_jeu2(void) {
int i;
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
int score = 0;
char scoreStr[20];
Pomme pommes[5];
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
initialiserSerpent(serpent, &longueur);
dessinerGrille();
for (i = 0; i < 5; i++) {
pommes[i] = creerPomme();
dessinerPomme(pommes[i]);
}
while (1) {
gestionDeplacements(serpent, &direction_x, &direction_y);
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
for (i = 0; i < 5; i++) {
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
longueur++;
score += 5;
pommes[i] = creerPomme();
dessinerPomme(pommes[i]);
}
}
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
/* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver();
} }
dessinerSerpent(serpent, &longueur); dessinerSerpent(serpent, &longueur);
usleep(100000);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 40);
/* Convertit le score en chaîne de caractères */
snprintf(scoreStr, sizeof(scoreStr), "%d", score);
/* Affiche le nouveau score */
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
EcrireTexte(178, 976, scoreStr, 2);
struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/
nanosleep(&delai, NULL);
}
}
void lancer_jeu3(void) {
struct timespec delai = {0, 40000000}; /*40 000 000 nanosecondes (0.04 seconde)*/
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
int score = 0;
char scoreStr[20];
Pomme pomme;
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
initialiserSerpent(serpent, &longueur);
dessinerGrille();
pomme = creerPomme();
dessinerPomme(pomme);
while (1) {
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);
}
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
/* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver();
}
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 40);
/* Convertit le score en chaîne de caractères */
snprintf(scoreStr, sizeof(scoreStr), "%d", score);
/* Affiche le nouveau score */
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
EcrireTexte(178, 976, scoreStr, 2);
/*Permet de gérer la vitesse du serpent*/
nanosleep(&delai, NULL);
}
}
void lancer_jeu4(void) {
struct timespec delai = {0, 30000000}; /*40 000 000 nanosecondes (0.04 seconde)*/
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
int score = 0;
char scoreStr[20];
Pomme pomme;
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
initialiserSerpent(serpent, &longueur);
dessinerGrille();
pomme = creerPomme();
dessinerPomme(pomme);
while (1) {
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);
}
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
/* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver();
}
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 40);
/* Convertit le score en chaîne de caractères */
snprintf(scoreStr, sizeof(scoreStr), "%d", score);
/* Affiche le nouveau score */
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
EcrireTexte(178, 976, scoreStr, 2);
/*Permet de gérer la vitesse du serpent*/
nanosleep(&delai, NULL);
} }
} }