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
void afficherScore(int score);
void lancer_jeu1(void);
void lancer_jeu2(void);
void lancer_jeu3(void);
void lancer_jeu4(void);
void lancer_jeu5(void);
#endif /*JEU_H*/

View File

@ -1,12 +1,10 @@
#ifndef TIMER_H
#define TIMER_H
unsigned long int attendre(void);
unsigned long int creer_timer(void);
int afficher_minute(int min);
void initialiser_timer(int *min, 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 */

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

View File

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

View File

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

View File

@ -10,8 +10,9 @@
void dessinerObstacle(Obstacle obstacle) {
ChoisirCouleurDessin(CouleurParComposante(10, 10, 10)); /*choix de la couleur de l'opstacle */
RemplirRectangle(obstacle.x * TAILLE_CASE, obstacle.y * TAILLE_CASE, TAILLE_CASE, TAILLE_CASE);
int id_bombe;
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 "../include/serpent.h"
#include "../include/main.h"
#include "../include/timer.h"
#define TAILLE_CASE 20
#define LARGEUR_GRILLE 60
#define HAUTEUR_GRILLE 40
@ -39,6 +40,8 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y)
} else if (touche == XK_Escape) {
FermerGraphique();
main();
} else if (touche == XK_space) {
pause();
}
}
}

View File

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