Soirée Peer Programming avec Marco ORFAO : Création des pommes, ajouts de nouveaux modes de jeux, création de fichier .h, correction de bug etc...

This commit is contained in:
stiti 2023-12-06 22:32:08 +01:00
parent 4f440ff76f
commit 54da386d6a
9 changed files with 115 additions and 55 deletions

10
include/grille.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef GRILLE_H
#define GRILLE_H
#define TAILLE_CASE 20
#define LARGEUR_GRILLE 60
#define HAUTEUR_GRILLE 40
void dessinerGrille(void);
#endif /*GRILLE_H*/

6
include/main.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef MAIN_H
#define MAIN_H
int main(void);
#endif /*MAIN_H*/

12
include/menu.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef MENU_H
#define MENU_H
void afficherMenuPrincipal(void);
void afficherMenuModesDeJeu(void);
void afficherMenuGameOver(void);
int attendreChoixGameOver(void);
int attendreChoixModesDeJeu(void);
int attendreChoixMenu(void);
#endif /*MENU_H*/

16
include/pomme.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef POMME_H
#define POMME_H
#include "../include/grille.h"
#include "../include/serpent.h"
typedef struct {
int x;
int y;
} Pomme;
Pomme creerPomme();
void dessinerPomme(Pomme pomme);
int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur);
#endif /*POMME_H*/

View File

@ -1,14 +1,13 @@
#ifndef SERPENT_H
#define SERPENT_H
typedef struct {
int x, y;
} Segment;
void initialiserSerpent(Segment serpent[], int *longueur);
void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y);
int tuerSerpent(Segment serpent[]);
int tuerSerpent(Segment serpent[], int longueur);
void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y);
void dessinerSerpent(Segment serpent[], int *longueur);
int seMangerQueue(Segment serpent[], int longueur);

View File

@ -1,12 +1,14 @@
#include <graph.h>
#include "../include/grille.h"
void dessinerGrille(void) {
/* Dessine une grille de 60 colonnes sur 40 lignes */
void dessinerGrille() {
ChargerImageFond("../img/grille.png");
int i, j;
int tailleCase = 20;
int tailleCase = 20; /* Taille d'une case */
couleur couleur1 = CouleurParComposante(170, 215, 82); /* Vert clair */
couleur couleur2 = CouleurParComposante(54, 103, 0); /* Vert foncé */
ChargerImageFond("../img/bas_grille.png"); /*Affiche l'image du bas => Score... Timer...*/
for (i = 0; i < 40; i++) {
for (j = 0; j < 60; j++) {
@ -19,15 +21,3 @@ void dessinerGrille() {
}
}
}
/* UNIQUEMENT POUR TESTER LA GRILLE
int main() {
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
dessinerGrille();
Touche();
FermerGraphique();
return 0;
}
*/

View File

@ -1,16 +1,15 @@
#include <stdio.h>
#include <stdlib.h>
#include <graph.h>
#include "../include/menu.h"
#include "../include/jeu.h"
#include "../include/menu.h"
int main(){
int main(void) {
int choixMenuPrincipal = 0;
int choixModesDeJeu = 0;
InitialiserGraphique();
CreerFenetre(0, 0, 1200, 1000);
int choixMenuPrincipal = 0;
int choixModesDeJeu = 0;
while (1) {
if (choixMenuPrincipal == 0) {
@ -19,12 +18,23 @@ int main(){
} else if (choixMenuPrincipal == 1) {
afficherMenuModesDeJeu();
choixModesDeJeu = attendreChoixModesDeJeu();
choixMenuPrincipal = 0;
if(choixModesDeJeu == 1){
lancer_jeu1();
}
if(choixModesDeJeu == 2){
lancer_jeu2();
}
if(choixModesDeJeu == 3){
lancer_jeu3();
}
if(choixModesDeJeu == 4){
lancer_jeu4();
}
} else if (choixMenuPrincipal == 2) {
FermerGraphique();
return 0;
return EXIT_SUCCESS;
}
}
return 0;
return EXIT_SUCCESS;
}

View File

@ -2,6 +2,7 @@
#include<stdlib.h>
#include<graph.h>
#include "../include/menu.h"
#include "../include/main.h"
void afficherMenuPrincipal(){
ChargerImageFond("../img/menu_principal.png");
@ -30,31 +31,54 @@ void afficherMenuModesDeJeu(){
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(38.7, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(98.6, 700, "Classique", 2);
EcrireTexte(87.6, 700, "Classique", 2);
/*Affiche le bouton n°2*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(332.6, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(387.4, 700, "Facile", 2);
EcrireTexte(360.4, 700, "MultiPommes", 2);
/*Affiche le bouton n°3*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(626.2, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(686.1, 700, "Moyen", 2);
EcrireTexte(700.1, 700, "Rapide", 2);
/*Affiche le bouton n°4*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(919.7, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(979.7, 700, "Difficile", 2);
EcrireTexte(960.7, 700, "Ultra rapide", 2);
}
void afficherMenuCheatCode(){
ChargerImageFond("menu_cheat_code.png");
void afficherMenuGameOver(void) {
/* Affiche l'image game over */
ChargerImageFond("../img/game_over.png");
}
int attendreChoixGameOver() {
int x, y;
while (1) {
if (SourisCliquee()) {
SourisPosition();
x = _X;
y = _Y;
/* Vérifie si le bouton "Menu Principal" est cliqué */
if (x >= 379 && x <= 830.7 && y >= 530.3 && y <= 670.1) {
FermerGraphique();
main(); /* Renvoie vers le menu principal" */
}
}
}
}
int attendreChoixModesDeJeu(){
int x, y;
@ -83,10 +107,6 @@ int attendreChoixModesDeJeu(){
if (x >= 919.7 && x <= 1161.3 && y >= 639.9 && y <= 742.9) {
return 4; /*Renvoie le choix bouton n°4*/
}
/*Vérifie si le bouton d'accès aux cheats codes est cliqué*/
if (x >= 1126.1 && x <= 1193.5 && y >= 792.8 && y <= 860.2) {
return 5;
}
}
}

View File

@ -1,9 +1,6 @@
#include <stdio.h>
#include <graph.h>
#include <unistd.h> /* en attendant de trouver une meilleur fonction pour le temps*/
#include "../include/grille.h"
#include "../include/serpent.h"
#define TAILLE_CASE 20
#define LARGEUR_GRILLE 60
#define HAUTEUR_GRILLE 40
@ -39,25 +36,25 @@ void gestionDeplacements(Segment serpent[], int *direction_x, int *direction_y)
}
}
int tuerSerpent(Segment serpent[]) {
/*Vérifier si le serpent est sorti de la grille*/
int tuerSerpent(Segment serpent[], int longueur) {
int i;
/*Vérifier si la tête du serpent est sortie de la grille après le déplacement*/
if (serpent[0].x < 0 || serpent[0].x >= LARGEUR_GRILLE || serpent[0].y < 0 || serpent[0].y >= HAUTEUR_GRILLE) {
return 1; /*il est mort*/
}
/*Vérifier si la tête du serpent entre en collision avec son propre corps*/
for (i = 1; i < longueur; ++i) {
if (serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y) {
return 1; /*il est mort*/
}
}
int seMangerQueue(Segment serpent[], int longueur) {
int i;
/*Vérifie si la tête du serpent entre en collision avec son propre corps*/
for (i = 1; i < longueur; ++i) {
if (serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y) {
return 1; /*Le serpent s'est mangé sa propre queue*/
}
}
return 0; /*Aucune collision avec la queue*/
return 0; /*le serpent est en vie*/
}
void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int *direction_y) {
int i;
int ancienX = serpent[*longueur - 1].x;
@ -73,7 +70,7 @@ void mettreAJourSerpent(Segment serpent[], int *longueur, int *direction_x, int
serpent[0].x += *direction_x;
serpent[0].y += *direction_y;
tuerSerpent(serpent); /*Appeler la fonction pour vérifier si le serpent est mort*/
tuerSerpent(serpent,*longueur); /*Appeler la fonction pour vérifier si le serpent est mort*/
}
void dessinerSerpent(Segment serpent[], int *longueur) {