diff --git a/CosmicYonder.h b/CosmicYonder.h index c850765..ec9a75b 100644 --- a/CosmicYonder.h +++ b/CosmicYonder.h @@ -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 @@ -202,9 +202,9 @@ 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 @@ -212,11 +212,16 @@ void recup_objet(Joueur* joueur, Salle* salle, Objet objet, int* nb_obj_inv, int //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 \ No newline at end of file diff --git a/Makefile b/Makefile index c0e9f7b..05ce933 100644 --- a/Makefile +++ b/Makefile @@ -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 @@ -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) diff --git a/main.c b/main.c index 97c44d0..808bbad 100644 --- a/main.c +++ b/main.c @@ -4,35 +4,6 @@ #include "ui/ui.h" #include -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]; @@ -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); @@ -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); diff --git a/partie.c b/partie.c new file mode 100644 index 0000000..e1d4d5e --- /dev/null +++ b/partie.c @@ -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;inb_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)--; + } +} \ No newline at end of file