restructuration de jeu.c pour éviter la répétition de code ainsi que pour l'optimiser
This commit is contained in:
parent
795f846512
commit
ccacf5aec9
238
src/jeu.c
238
src/jeu.c
@ -8,241 +8,45 @@
|
|||||||
#include "../include/menu.h"
|
#include "../include/menu.h"
|
||||||
#include "../include/timer.h"
|
#include "../include/timer.h"
|
||||||
|
|
||||||
|
void jouer(int nbPommes, unsigned long int vitesse) {
|
||||||
void afficherScore(int score) {
|
|
||||||
char scoreStr[20];
|
|
||||||
/* Efface l'ancien score */
|
|
||||||
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
|
|
||||||
RemplirRectangle(178, 946, 130, 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(179, 976, scoreStr, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void lancer_jeu1(void) {
|
|
||||||
int fin = 1;
|
|
||||||
Segment serpent[2400];
|
|
||||||
int longueur = 10;
|
|
||||||
int direction_x = 1;
|
|
||||||
int direction_y = 0;
|
|
||||||
int score = 0;
|
|
||||||
char scoreStr[20];
|
|
||||||
Pomme pomme;
|
|
||||||
int min, sec;
|
|
||||||
int id_pomme;
|
|
||||||
int esc=0;
|
|
||||||
|
|
||||||
|
|
||||||
initialiser_timer(&min, &sec);
|
|
||||||
initialiserSerpent(serpent, &longueur);
|
|
||||||
dessinerGrille();
|
|
||||||
id_pomme=ChargerSprite("img/pomme1.png");
|
|
||||||
|
|
||||||
pomme = creerPomme();
|
|
||||||
dessinerPomme(pomme,id_pomme);
|
|
||||||
|
|
||||||
while (fin == 1) {
|
|
||||||
update_timer(&min, &sec);
|
|
||||||
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
|
|
||||||
if(esc==1){ /*verifie si on appuie sur échap */
|
|
||||||
return; /*quitte si on appuie sur échap*/
|
|
||||||
}
|
|
||||||
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
|
|
||||||
|
|
||||||
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) {
|
|
||||||
longueur+=2;
|
|
||||||
score += 5;
|
|
||||||
pomme = creerPomme();
|
|
||||||
dessinerPomme(pomme,id_pomme);
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
afficherScore(score);
|
|
||||||
update_timer(&min, &sec);
|
|
||||||
|
|
||||||
attendreSerpent(100000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void lancer_jeu2(void) {
|
|
||||||
int i;
|
int i;
|
||||||
Segment serpent[2400];
|
Segment serpent[2400];
|
||||||
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 = 100000; /*vitesse de base*/
|
|
||||||
int score = 0;
|
|
||||||
char scoreStr[20];
|
|
||||||
Pomme pommes[5];
|
|
||||||
int min, sec;
|
|
||||||
int id_pomme;
|
|
||||||
int esc;
|
|
||||||
|
|
||||||
|
|
||||||
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],id_pomme);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
|
|
||||||
if(esc==1){/*verifie si on appuie sur échap */
|
|
||||||
return; /*quitte si on appuie sur échap*/
|
|
||||||
}
|
|
||||||
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+=2;
|
|
||||||
score += 5;
|
|
||||||
pommes[i] = creerPomme();
|
|
||||||
dessinerPomme(pommes[i],id_pomme);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
afficherScore(score);
|
|
||||||
update_timer(&min, &sec);
|
|
||||||
|
|
||||||
attendreSerpent(vitesse); /*Gère la vitesse*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void lancer_jeu4(void) {
|
|
||||||
int longueur = 10;
|
|
||||||
int direction_x = 1;
|
|
||||||
int direction_y = 0;
|
|
||||||
int score = 0;
|
|
||||||
unsigned long int vitesse = 100000; /*vitesse de base*/
|
|
||||||
char scoreStr[20];
|
|
||||||
Pomme pomme;
|
|
||||||
Segment serpent[2400];
|
|
||||||
int min, sec;
|
|
||||||
int id_pomme;
|
|
||||||
int esc=0;
|
|
||||||
|
|
||||||
|
|
||||||
initialiser_timer(&min, &sec);
|
|
||||||
initialiserSerpent(serpent, &longueur);
|
|
||||||
dessinerGrille();
|
|
||||||
|
|
||||||
id_pomme=ChargerSprite("img/pomme1.png");
|
|
||||||
pomme = creerPomme();
|
|
||||||
dessinerPomme(pomme,id_pomme);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
|
|
||||||
if(esc==1){/*verifie si on appuie sur échap */
|
|
||||||
return;/*quitte si on appuie sur echap*/
|
|
||||||
}
|
|
||||||
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
|
|
||||||
|
|
||||||
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) {
|
|
||||||
longueur+=2;
|
|
||||||
score += 5;
|
|
||||||
pomme = creerPomme();
|
|
||||||
dessinerPomme(pomme,id_pomme);
|
|
||||||
|
|
||||||
/* Augmenter la vitesse à chaque pomme mangée*/
|
|
||||||
if(vitesse >=15000){
|
|
||||||
vitesse -=40; /* Réduire la durée d'attente (augmenter la vitesse)*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tuerSerpent(serpent, longueur)){
|
|
||||||
int choixGameOver;
|
|
||||||
afficherMenuGameOver();
|
|
||||||
afficherScore(score);
|
|
||||||
afficher_minute(min);
|
|
||||||
afficher_seconde(sec);
|
|
||||||
|
|
||||||
/* Attend le choix du joueur après le game over */
|
|
||||||
attendreChoixGameOver();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
dessinerSerpent(serpent, &longueur);
|
|
||||||
afficherScore(score);
|
|
||||||
update_timer(&min, &sec);
|
|
||||||
|
|
||||||
attendreSerpent(vitesse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void lancer_jeu3(void) {
|
|
||||||
int i;
|
|
||||||
Segment serpent[2400];
|
|
||||||
int longueur = 10;
|
|
||||||
int direction_x = 1;
|
|
||||||
int direction_y = 0;
|
|
||||||
unsigned long int vitesse = 90000; /*vitesse de base*/
|
|
||||||
int score = 0;
|
int score = 0;
|
||||||
char scoreStr[20];
|
char scoreStr[20];
|
||||||
Pomme pommes[25];
|
Pomme pommes[25];
|
||||||
int min, sec;
|
int min, sec;
|
||||||
int id_pomme;
|
int id_pomme;
|
||||||
int esc=0;
|
int esc = 0;
|
||||||
|
|
||||||
|
|
||||||
initialiser_timer(&min, &sec);
|
initialiser_timer(&min, &sec);
|
||||||
initialiserSerpent(serpent, &longueur);
|
initialiserSerpent(serpent, &longueur);
|
||||||
dessinerGrille();
|
dessinerGrille();
|
||||||
id_pomme=ChargerSprite("img/pomme1.png");
|
id_pomme = ChargerSprite("img/pomme1.png");
|
||||||
for (i = 0; i < 25; i++) {
|
|
||||||
|
for (i = 0; i < nbPommes; i++) {
|
||||||
pommes[i] = creerPomme();
|
pommes[i] = creerPomme();
|
||||||
dessinerPomme(pommes[i],id_pomme);
|
dessinerPomme(pommes[i], id_pomme);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
|
esc = gestionDeplacements(serpent, &direction_x, &direction_y);
|
||||||
if(esc==1){
|
if (esc == 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
|
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
|
||||||
|
|
||||||
for (i = 0; i < 25; i++) {
|
for (i = 0; i < nbPommes; i++) {
|
||||||
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
|
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
|
||||||
longueur+=2;
|
longueur += 2;
|
||||||
score += 5;
|
score += 5;
|
||||||
if(vitesse >=15000){
|
if (vitesse >= 15000) {
|
||||||
vitesse -=40;
|
vitesse -= 40;
|
||||||
}
|
}
|
||||||
pommes[i] = creerPomme();
|
pommes[i] = creerPomme();
|
||||||
dessinerPomme(pommes[i],id_pomme);
|
dessinerPomme(pommes[i], id_pomme);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,3 +70,19 @@ void lancer_jeu3(void) {
|
|||||||
attendreSerpent(vitesse); /*Gère la vitesse*/
|
attendreSerpent(vitesse); /*Gère la vitesse*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lancer_jeu1(void) {
|
||||||
|
jouer(1, 100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lancer_jeu2(void) {
|
||||||
|
jouer(2, 100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lancer_jeu3(void) {
|
||||||
|
jouer(10, 90000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lancer_jeu4(void) {
|
||||||
|
jouer(25, 100000);
|
||||||
|
}
|
@ -16,7 +16,7 @@ int afficher_seconde(int sec){
|
|||||||
if(sec<=9){
|
if(sec<=9){
|
||||||
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
|
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
|
||||||
RemplirRectangle(x-3,y-25,40,30);
|
RemplirRectangle(x-3,y-25,40,30);
|
||||||
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
|
ChoisirCouleurDessin(CouleurParComposante(255, 255, 0));
|
||||||
EcrireTexte(x,y,"0",2);
|
EcrireTexte(x,y,"0",2);
|
||||||
snprintf(timer,sizeof(timer),"%d",sec);
|
snprintf(timer,sizeof(timer),"%d",sec);
|
||||||
EcrireTexte(x+15,y,timer,2);
|
EcrireTexte(x+15,y,timer,2);
|
||||||
|
Loading…
Reference in New Issue
Block a user