Correction de bugs

This commit is contained in:
stiti 2023-12-10 18:14:02 +01:00
parent 64c5fc17a6
commit c1c53b53f2
12 changed files with 84 additions and 172 deletions

BIN
img/bombe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -2,12 +2,12 @@
#define JEU_H #define JEU_H
void afficherScore(int score); void afficherScore(int score);
void lancer_jeu1(void); void lancer_jeu1(void);
void lancer_jeu2(void); void lancer_jeu2(void);
void lancer_jeu3(void); void lancer_jeu3(void);
void lancer_jeu4(void); void lancer_jeu4(void);
void lancer_jeu5(void);
#endif /*JEU_H*/ #endif /*JEU_H*/

View File

@ -1,12 +1,10 @@
#ifndef TIMER_H #ifndef TIMER_H
#define TIMER_H #define TIMER_H
void initialiser_timer(int *min, int *sec);
unsigned long int attendre(void);
unsigned long int creer_timer(void);
int afficher_minute(int min);
int afficher_seconde(int sec); int afficher_seconde(int sec);
int afficher_minute(int min);
void update_timer(int *min, int *sec);
void pause(void);
#endif /* TIMER_H */
#endif /*TIMER_H*/

View File

@ -1,18 +0,0 @@
{
"configurations": [
{
"name": "linux-gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "linux-gcc-x64",
"compilerArgs": [
""
]
}
],
"version": 4
}

View File

@ -1,24 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": false,
"cwd": "/export/home/an23/stiti/PROJET DEV/SAE11_2023/src",
"program": "/export/home/an23/stiti/PROJET DEV/SAE11_2023/src/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

View File

@ -1,37 +0,0 @@
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wconversion",
"-Wnull-dereference",
"-Wsign-conversion"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false
}

View File

@ -24,6 +24,7 @@ void afficherScore(int score) {
void lancer_jeu1(void) { void lancer_jeu1(void) {
int fin = 1;
Segment serpent[100]; Segment serpent[100];
int longueur = 10; int longueur = 10;
int direction_x = 1; int direction_x = 1;
@ -31,20 +32,18 @@ void lancer_jeu1(void) {
int score = 0; int score = 0;
char scoreStr[20]; char scoreStr[20];
Pomme pomme; Pomme pomme;
int min, sec;
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
ChoisirTitreFenetre("Snake By Moncef & Marco");
initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
pomme = creerPomme(); pomme = creerPomme();
dessinerPomme(pomme); dessinerPomme(pomme);
while (fin == 1) {
while (1) { update_timer(&min, &sec);
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);
@ -58,21 +57,22 @@ void lancer_jeu1(void) {
if (tuerSerpent(serpent, longueur)) { if (tuerSerpent(serpent, longueur)) {
int choixGameOver; int choixGameOver;
afficherMenuGameOver(); afficherMenuGameOver();
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score); afficherScore(score);
/* Attend le choix du joueur après le game over */ /* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver(); choixGameOver = attendreChoixGameOver();
} }
dessinerSerpent(serpent, &longueur); dessinerSerpent(serpent, &longueur);
afficherScore(score); afficherScore(score);
update_timer(&min, &sec);
attendreSerpent(150000); attendreSerpent(150000);
} }
} }
void lancer_jeu2(void) { void lancer_jeu2(void) {
int i; int i;
Segment serpent[100]; Segment serpent[100];
@ -83,12 +83,10 @@ void lancer_jeu2(void) {
int score = 0; int score = 0;
char scoreStr[20]; char scoreStr[20];
Pomme pommes[5]; Pomme pommes[5];
int min, sec;
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
ChoisirTitreFenetre("Snake By Moncef & Marco");
initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
@ -113,6 +111,9 @@ void lancer_jeu2(void) {
if (tuerSerpent(serpent, longueur)) { if (tuerSerpent(serpent, longueur)) {
int choixGameOver; int choixGameOver;
afficherMenuGameOver(); afficherMenuGameOver();
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score);
/* Attend le choix du joueur après le game over */ /* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver(); choixGameOver = attendreChoixGameOver();
@ -121,8 +122,9 @@ void lancer_jeu2(void) {
dessinerSerpent(serpent, &longueur); dessinerSerpent(serpent, &longueur);
afficherScore(score); afficherScore(score);
update_timer(&min, &sec);
attendreSerpent(vitesse); attendreSerpent(vitesse); /*Gère la vitesse*/
} }
} }
@ -136,13 +138,10 @@ void lancer_jeu4(void) {
char scoreStr[20]; char scoreStr[20];
Pomme pomme; Pomme pomme;
Segment serpent[100]; Segment serpent[100];
int min, sec;
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
ChoisirTitreFenetre("Snake By Moncef & Marco");
initialiser_timer(&min, &sec);
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
@ -173,6 +172,7 @@ void lancer_jeu4(void) {
dessinerSerpent(serpent, &longueur); dessinerSerpent(serpent, &longueur);
afficherScore(score); afficherScore(score);
update_timer(&min, &sec);
attendreSerpent(vitesse); attendreSerpent(vitesse);
} }
@ -190,14 +190,9 @@ void lancer_jeu3(void) {
int nombreObstacles = 10; int nombreObstacles = 10;
Obstacle *obstacles = malloc(nombreObstacles * sizeof(Obstacle)); Obstacle *obstacles = malloc(nombreObstacles * sizeof(Obstacle));
Segment serpent[100]; Segment serpent[100];
int min, sec;
initialiser_timer(&min, &sec);
FermerGraphique();
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
ChoisirTitreFenetre("Snake By Moncef & Marco");
initialiserSerpent(serpent, &longueur); initialiserSerpent(serpent, &longueur);
dessinerGrille(); dessinerGrille();
@ -223,6 +218,8 @@ void lancer_jeu3(void) {
if (tuerSerpent(serpent, longueur)) { if (tuerSerpent(serpent, longueur)) {
int choixGameOver; int choixGameOver;
afficherMenuGameOver(); afficherMenuGameOver();
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score); afficherScore(score);
/* Attend le choix du joueur après le game over */ /* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver(); choixGameOver = attendreChoixGameOver();
@ -233,6 +230,9 @@ void lancer_jeu3(void) {
if (estCollisionObstacle(obstacles[i], serpent, longueur)) { if (estCollisionObstacle(obstacles[i], serpent, longueur)) {
int choixGameOver; int choixGameOver;
afficherMenuGameOver(); afficherMenuGameOver();
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score);
/* Attend le choix du joueur après le game over */ /* Attend le choix du joueur après le game over */
choixGameOver = attendreChoixGameOver(); choixGameOver = attendreChoixGameOver();
@ -259,6 +259,8 @@ void lancer_jeu3(void) {
} }
afficherScore(score); afficherScore(score);
update_timer(&min, &sec);
/*Attendre en fonction de la vitesse actuelle*/ /*Attendre en fonction de la vitesse actuelle*/
attendreSerpent(vitesse); attendreSerpent(vitesse);

View File

@ -20,15 +20,19 @@ int main(void) {
afficherMenuModesDeJeu(); afficherMenuModesDeJeu();
choixModesDeJeu = attendreChoixModesDeJeu(); choixModesDeJeu = attendreChoixModesDeJeu();
if(choixModesDeJeu == 1){ if(choixModesDeJeu == 1){
EffacerEcran(CouleurParNom("white"));
lancer_jeu1(); lancer_jeu1();
} }
if(choixModesDeJeu == 2){ if(choixModesDeJeu == 2){
EffacerEcran(CouleurParNom("white"));
lancer_jeu2(); lancer_jeu2();
} }
if(choixModesDeJeu == 3){ if(choixModesDeJeu == 3){
EffacerEcran(CouleurParNom("white"));
lancer_jeu3(); lancer_jeu3();
} }
if(choixModesDeJeu == 4){ if(choixModesDeJeu == 4){
EffacerEcran(CouleurParNom("white"));
lancer_jeu4(); lancer_jeu4();
} }
} else if (choixMenuPrincipal == 2) { } else if (choixMenuPrincipal == 2) {

View File

@ -49,7 +49,7 @@ int attendreChoixGameOver() {
/* Vérifie si le bouton "Menu Principal" est cliqué */ /* Vérifie si le bouton "Menu Principal" est cliqué */
if (x >= 379 && x <= 830.7 && y >= 530.3 && y <= 670.1) { if (x >= 379 && x <= 830.7 && y >= 530.3 && y <= 670.1) {
FermerGraphique(); EffacerEcran(CouleurParNom("white"));
main(); /* Renvoie vers le menu principal" */ main(); /* Renvoie vers le menu principal" */
} }

View File

@ -10,8 +10,9 @@
void dessinerObstacle(Obstacle obstacle) { void dessinerObstacle(Obstacle obstacle) {
ChoisirCouleurDessin(CouleurParComposante(10, 10, 10)); /*choix de la couleur de l'opstacle */ int id_bombe;
RemplirRectangle(obstacle.x * TAILLE_CASE, obstacle.y * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE); id_bombe = ChargerSprite("../img/bombe.png");
AfficherSprite(id_bombe,obstacle.x * TAILLE_CASE, obstacle.y * TAILLE_CASE);
} }

View File

@ -2,6 +2,7 @@
#include <graph.h> #include <graph.h>
#include "../include/serpent.h" #include "../include/serpent.h"
#include "../include/main.h" #include "../include/main.h"
#include "../include/timer.h"
#define TAILLE_CASE 20 #define TAILLE_CASE 20
#define LARGEUR_GRILLE 60 #define LARGEUR_GRILLE 60
#define HAUTEUR_GRILLE 40 #define HAUTEUR_GRILLE 40
@ -39,6 +40,8 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y)
} else if (touche == XK_Escape) { } else if (touche == XK_Escape) {
FermerGraphique(); FermerGraphique();
main(); main();
} else if (touche == XK_space) {
pause();
} }
} }
} }

View File

@ -1,23 +1,18 @@
#include<stdio.h> #include <stdio.h>
#include<stdlib.h> #include <stdlib.h>
#include<graph.h> #include <graph.h>
#include "../include/timer.h"
#define cycle 1000000L #define cycle 1000000L
unsigned long int attendre(void) { void initialiser_timer(int *min, int *sec) {
unsigned long int temps_pause; *min = 0;
unsigned long int t1 = Microsecondes(); *sec = 0;
while (1) {
if (ToucheEnAttente() && Touche() == XK_space) {
break;
}
}
temps_pause = Microsecondes() - t1;
return temps_pause;
} }
int afficher_seconde(int sec){ int afficher_seconde(int sec){
char timer[50]; char timer[50];
int x = 120 ,y = 100; int x = 230 ,y = 850;
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);
@ -37,63 +32,51 @@ int afficher_seconde(int sec){
int afficher_minute(int min){ int afficher_minute(int min){
char timer[50]; char timer[50];
int x = 80 ,y = 100; int x = 190 ,y = 850;
if(min<=9){ if(min<=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, 255));
EcrireTexte(x,y,"0",2); EcrireTexte(x,y,"0",2);
snprintf(timer,sizeof(timer),"%d",min); snprintf(timer,sizeof(timer),"%d",min);
EcrireTexte(110,100,":",2); EcrireTexte(x+30,y,":",2);
EcrireTexte(x+15,y,timer,2); EcrireTexte(x+15,y,timer,2);
} else { } else {
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(x-3,y-25,40,25); RemplirRectangle(x-3,y-25,40,25);
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
snprintf(timer,sizeof(timer),"%d",min); snprintf(timer,sizeof(timer),"%d",min);
EcrireTexte(110,100,":",2); EcrireTexte(x+30,y,":",2);
EcrireTexte(x,y,timer,2); EcrireTexte(x,y,timer,2);
} }
return min; return min;
} }
void creer_timer(void){ void update_timer(int *min, int *sec) {
int sec = 0,min=0,x=1; static unsigned long int temps_precedent = 0;
unsigned long int temps = 0,seconde,pause=0; unsigned long int temps_actuel = Microsecondes();
seconde=Microsecondes()+cycle; unsigned long int temps_ecoule = temps_actuel - temps_precedent;
afficher_seconde(sec);
afficher_minute(min); if (temps_ecoule >= cycle) {
EcrireTexte(110,100,":",2); temps_precedent = temps_actuel;
while(x=1){
if(Microsecondes()>seconde){ if (*sec < 59) {
sec++; (*sec)++;
afficher_seconde(sec); } else {
seconde=Microsecondes()+cycle; *sec = 0;
if(sec==60){ (*min)++;
sec=0;
min++;
afficher_seconde(sec);
afficher_minute(min);
} }
} /* Afficher le timer */
if(ToucheEnAttente()==1){ afficher_seconde(*sec);
if(Touche()==XK_space){ afficher_minute(*min);
pause=attendre();
}
if(Touche()==XK_Escape){
x=0;
}
}
} }
} }
/* void pause(void) {
int main(void){ while (1) {
InitialiserGraphique(); if (ToucheEnAttente() && Touche() == XK_space) {
CreerFenetre(1000,0,1000,1000); break;
creer_timer(); }
FermerGraphique(); }
return EXIT_SUCCESS;
} }
*/