Skip to content

Commit

Permalink
Modularisation des fonctions dans le main
Browse files Browse the repository at this point in the history
  • Loading branch information
Pyrodaz committed May 25, 2024
1 parent 0f3ce33 commit 8f3c56d
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 43 deletions.
15 changes: 10 additions & 5 deletions CosmicYonder.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#define TAILLE_MAX_H 20
#define MAX_SALLES 10
#define IMAGES_PAR_SECONDE 60
#define MINUTEUR 10
#define MINUTEUR 300

//Enumération des différents objets

Expand Down Expand Up @@ -202,21 +202,26 @@ Ennemi* apparition_ennemi(Salle* salle);
//fait despawn l'ennemi quand il meurt
void desapparition_ennemi(Ennemi* ennemi, Salle* salle,Joueur* joueur, WINDOW* win);
//gere la perte de vie de l'ennemi
void perte_vie_ennemi(Ennemi* ennemi, Joueur* joueur); //gere la perte de vie de l'ennemi
void perte_vie_ennemi(Ennemi* ennemi, Joueur* joueur);

//OBJETS
//OBJETS
//Crée et fait apparaitre un objet dans une salle en fonction des objets spéciaux apparus,des salles restantes et des portes non ouvertes
Objet apparition_objet(Salle* salle, int* objets_speciaux_apparus, int sallesrest, int portesNonOuvertes);
//permet de recuperer un objet
void recup_objet(Joueur* joueur, Salle* salle, Objet objet, int* nb_obj_inv, int* nb_obj_spe_inv);
//fait disparaitre un objet quand le joueur le ramasse
void desapparition_objet(Objet* objet, Salle* salle, WINDOW* win);

//HUD
//Fait apparaitre l'interface graphique pour les informations du joueur et de la partie
HUD * hudJeu(int x, int y, int hauteur, int largeur, Joueur * joueur, int minuteur);
HUD * hudJeu(int x, int y, int hauteur, int largeur, Joueur * joueur,int minuteur);

// SAUVEGARDE
void saveGame(Partie partie);
Partie * loadGame();


//JEU
Partie * creerPartie();
int condition_victoire(Partie* partie);
void chronos(int* minuteur,int*decr_minuteur);
#endif
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ EXEC=jeu

all: jeu

jeu: logger.o graphics.o objet.o salles.o joueur.o main.o interactions.o graine.o ennemi.o porte.o ui/menu.o ui/ui.o ui/hud.o json/json.o sauvegarde.o
jeu: logger.o graphics.o objet.o salles.o joueur.o main.o interactions.o graine.o ennemi.o porte.o partie.o ui/menu.o ui/ui.o ui/hud.o json/json.o sauvegarde.o
$(CC) -o $@ $^ $(LDFLAGS)

sauvegarde.o: sauvegarde.c
Expand Down Expand Up @@ -50,6 +50,9 @@ ennemi.o: ennemi.c
porte.o: porte.c
$(CC) -o $@ -c $< $(CFLAGS)

partie.o: partie.c
$(CC) -o $@ -c $< $(CFLAGS)

main.o: main.c logger.c graphics.c objet.c salles.c joueur.c interactions.c ennemi.c graine.c porte.c ui/menu.c ui/ui.c ui/hud.c json/json.c sauvegarde.c
$(CC) -o $@ -c $< $(CFLAGS)

Expand Down
41 changes: 4 additions & 37 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,6 @@
#include "ui/ui.h"
#include <ncurses.h>

Partie * creerPartie() {
/* Fonction servant à créer la sauvegarde de la partie en allouant les différents
éléments nécessaires pour la restaurer*/
Partie * partie = NULL;
partie = malloc(sizeof(Partie));
if(partie == NULL) {
logMessage(CRITICAL, "erreur malloc partie");
exit(1);
}
partie->joueur = malloc(sizeof(Joueur));
if(partie->joueur == NULL) {
logMessage(CRITICAL, "erreur malloc joueur");
exit(1);
}
partie->carte = malloc(MAX_SALLES * sizeof(Salle));
if(partie->carte == NULL) {
logMessage(CRITICAL, "erreur malloc carte");
exit(1);
}
partie->salles_existantes = 0; //compteur de salles existantes
partie->objets_speciaux_apparus = 0; //Compteur des objets à récupérer pour gagner apparus
partie->portesNonOuvertes = 0;//Compte les portes non ouvertes sur la carte
partie->nb_obj_inv = 0;
partie->nb_obj_spe_inv = 0;
partie->mvEnnemic = 0;
return partie;
}


int main()
{
char logBuffer[255];
Expand Down Expand Up @@ -225,7 +196,7 @@ int main()
afficheEnnemi(partie->carte[i]->ennemi, mainwin);
}
}
mvwaddch(mainwin,partie->joueur->y,partie->joueur->x, 'o'); //deplace le joueur a la nouvelle position
mvwaddch(mainwin,partie->joueur->y,partie->joueur->x, 'o'); //deplace le joueur a la nouvelle position
renduHUD(mainwin, hud, minuteur);

wrefresh(mainwin);
Expand All @@ -238,18 +209,14 @@ int main()
}
partie->mvEnnemic++;
napms(1000 / IMAGES_PAR_SECONDE);
/*decr_ minuteur ajuste le minuteur pour
qu'il retire bien 1 seconde par seconde en jeu en comptant les images par secondes*/
decr_minuteur++;
if(decr_minuteur >= IMAGES_PAR_SECONDE){
decr_minuteur = 0;
minuteur--;
}
chronos(&minuteur,&decr_minuteur);
etatJeu = condition_victoire(partie);
if(minuteur <= 0){
etatJeu = 0;
}
}


saveGame(*partie);
logMessage(INFO, "fin du programme");
free(partie->carte);
Expand Down
57 changes: 57 additions & 0 deletions partie.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#include "CosmicYonder.h"
#include "logger.h"
#include "ui/ui.h"

Partie * creerPartie() {
/* Fonction servant à créer la sauvegarde de la partie en allouant les différents
éléments nécessaires pour la restaurer*/
Partie * partie = NULL;
partie = malloc(sizeof(Partie));
if(partie == NULL) {
logMessage(CRITICAL, "erreur malloc partie");
exit(1);
}
partie->joueur = malloc(sizeof(Joueur));
if(partie->joueur == NULL) {
logMessage(CRITICAL, "erreur malloc joueur");
exit(1);
}
partie->carte = malloc(MAX_SALLES * sizeof(Salle));
if(partie->carte == NULL) {
logMessage(CRITICAL, "erreur malloc carte");
exit(1);
}
partie->salles_existantes = 0; //compteur de salles existantes
partie->objets_speciaux_apparus = 0; //Compteur des objets à récupérer pour gagner apparus
partie->portesNonOuvertes = 0;//Compte les portes non ouvertes sur la carte
partie->nb_obj_inv = 0;
partie->nb_obj_spe_inv = 0;
partie->mvEnnemic = 0;
return partie;
}

int condition_victoire(Partie* partie){
int compteur = 0;
for(int i = 0;i<partie->nb_obj_inv + partie->nb_obj_spe_inv;i++){
if(partie->joueur->inventaire.obTab[i].id >= 11){
compteur += 1;
}
}
if(compteur == 4){
return 0;
}
else{
return 1;
}

}

void chronos(int* minuteur,int*decr_minuteur){
/*decr_ minuteur ajuste le minuteur pour
qu'il retire bien 1 seconde par seconde en jeu en comptant les images par secondes*/
(*decr_minuteur)++;
if((*decr_minuteur) >= IMAGES_PAR_SECONDE){
(*decr_minuteur) = 0;
(*minuteur)--;
}
}

0 comments on commit 8f3c56d

Please sign in to comment.