Commit dcedd915 authored by vautrin33u's avatar vautrin33u
Browse files

Ajout d'une condition de fin de jeu + affichage temps restant

parent 73a62e2b
This diff is collapsed.
......@@ -206,5 +206,9 @@ enum cuisson {INCONCERNE, FRIGO, SALE, PROPRE, CUIT, CRU, JETE};
* */
#define POUBELLE_HAUTEUR 100
/**
* @brief Temps alloué à une partie (2 minutes)
*/
#define TEMPS_DE_PARTIE 120000
#endif
\ No newline at end of file
......@@ -185,11 +185,29 @@ void apply_ingredients (SDL_Renderer* renderer, textures_t* textures, sprite_t*
}
void apply_texte (SDL_Renderer* renderer, world_t* world, textures_t* textures){
//Affichage du score
if (textures->police != NULL){
//Zone d'affichage du score -- taille du score s'adapte à son contenu
//Affichage du score et du temps restant
//Zone d'affichage du score -- taille du score s'adapte à son contenu -- et d'horloge
SDL_Rect zone_message = create_SDL_rect(20, 550, 75, 50);
SDL_Rect zone_score;
SDL_Rect zone_horloge = create_SDL_rect(SCREEN_WIDTH/2, 5, 75, 50);
SDL_Texture* message;
SDL_Texture* points;
SDL_Texture* horloge;
//Couleur du texte
SDL_Color color = { 255, 255, 0, 0 };
char score_j[10];
char buffer[7];
//Traduction du temps restant en string:
sprintf(buffer, "%d", temps_restant(world));
if (buffer[0] == '1'){
buffer[3] = '\0';
}else{
buffer[2] = '\0';
}
//Concernant le score
if (get_score(world)<100){
zone_score = create_SDL_rect(90, 555, 40, 40);
}else if (get_score(world)<10000){
......@@ -197,18 +215,15 @@ void apply_texte (SDL_Renderer* renderer, world_t* world, textures_t* textures){
}else{
zone_score = create_SDL_rect(90, 555, 100, 40);
}
//Couleur du texte
SDL_Color color = { 255, 255, 0, 0 };
SDL_Texture* message;
SDL_Texture* points;
//affichage en deux partie de score et de la valeur du score
//affichage en deux partie de score et de la valeur du score, et du timer
horloge = charger_texte(buffer, renderer, textures->police, color);
message = charger_texte("Score : ", renderer, textures->police, color);
char score_j[10];
sprintf(score_j, " %d", world->score); //Nécessaire pour afficher le score -- limite le nombre de points max!
//printf("\n SCORE : %d", get_score(world));
points = charger_texte(score_j, renderer, textures->police, color);
render_texte(renderer, zone_message, message);
render_texte(renderer, zone_score, points);
render_texte(renderer, zone_horloge, horloge);
}
}
......
......@@ -75,6 +75,10 @@ int estFini(world_t *world){
return world->gameover;
}
void setFin (world_t *world, int indicateur_fin){
world->gameover = indicateur_fin;
}
void limites_externes (sprite_t *sprite){
//Défini les limites selon les murs
if (sprite->rect.x + sprite->rect.w > SCREEN_WIDTH-SIZE_MUR){
......@@ -261,3 +265,28 @@ void calcul_score (world_t* world, sprite_t* ingredient){
world->score += 5;
}
}
void temps_depassee (world_t* world){
//Retourne un indicateur si la partie peut continuer ou non
if (SDL_GetTicks() > TEMPS_DE_PARTIE){
world->gameover = 1;
}else{
if (estFini(world)==1){
//Si le jeu est terminé
world->gameover = 1;
}else{
world->gameover = 0;
}
}
}
int temps_restant (){
//Retourne le temps restant avant la fin de partie
Uint32 time = SDL_GetTicks();
int temps_restant;
if (time < INT_MAX){
temps_restant = (int) (TEMPS_DE_PARTIE - time);
if (temps_restant <=0) temps_restant = 0;
}
return temps_restant;
}
......@@ -18,6 +18,7 @@
#include "gestion_fichiers.h"
#include <string.h>
#include "interactions.h"
#include "limits.h"
......@@ -69,6 +70,14 @@ void init_data(world_t * world);
*/
int estFini(world_t *world);
/**
* @brief Met à jour le statut de fin de partie
*
* @param world
* @param indicateur_fin
*/
void setFin (world_t *world, int indicateur_fin);
/**
* \brief Gère les évenements en fonctions des entrées du joueur
* \param event données des évenements
......@@ -143,4 +152,19 @@ int get_score(world_t* world);
*/
void calcul_score (world_t* world, sprite_t* ingredient);
/**
* @brief Indique si il est temps de terminer la partie
*
* @param world Données du monde
*/
void temps_depassee (world_t* world);
/**
* @brief Temps restant avant la fin de partie
*
* @param world
* @return int temps restant
*/
int temps_restant ();
#endif
\ No newline at end of file
......@@ -53,8 +53,11 @@ while (estFini(&world)==0){
gestion_events(&evenements, &world);
update_data(&world);
update_graphics(ecran, &world, &textures);
SDL_Delay(10);
temps_depassee(&world);
SDL_RenderPresent(ecran); // Récupère les infos actualisés de render et les affiches
/*if (world.gameover == 1){
SDL_Delay(10000);
}*/
}
SDL_Delay(150);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment