Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
Projet l2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
VAUTRIN Guillaume
Projet l2
Commits
dcedd915
Commit
dcedd915
authored
4 years ago
by
vautrin33u
Browse files
Options
Downloads
Patches
Plain Diff
Ajout d'une condition de fin de jeu + affichage temps restant
parent
73a62e2b
No related branches found
No related tags found
No related merge requests found
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
Ressources/save.txt
+500
-500
500 additions, 500 deletions
Ressources/save.txt
constantes.h
+4
-0
4 additions, 0 deletions
constantes.h
graphisme.c
+24
-9
24 additions, 9 deletions
graphisme.c
logique.c
+29
-0
29 additions, 0 deletions
logique.c
logique.h
+24
-0
24 additions, 0 deletions
logique.h
main.c
+4
-1
4 additions, 1 deletion
main.c
with
585 additions
and
510 deletions
Ressources/save.txt
+
500
−
500
View file @
dcedd915
This diff is collapsed.
Click to expand it.
constantes.h
+
4
−
0
View file @
dcedd915
...
@@ -206,5 +206,9 @@ enum cuisson {INCONCERNE, FRIGO, SALE, PROPRE, CUIT, CRU, JETE};
...
@@ -206,5 +206,9 @@ enum cuisson {INCONCERNE, FRIGO, SALE, PROPRE, CUIT, CRU, JETE};
* */
* */
#define POUBELLE_HAUTEUR 100
#define POUBELLE_HAUTEUR 100
/**
* @brief Temps alloué à une partie (2 minutes)
*/
#define TEMPS_DE_PARTIE 120000
#endif
#endif
\ No newline at end of file
This diff is collapsed.
Click to expand it.
graphisme.c
+
24
−
9
View file @
dcedd915
...
@@ -185,11 +185,29 @@ void apply_ingredients (SDL_Renderer* renderer, textures_t* textures, sprite_t*
...
@@ -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
){
void
apply_texte
(
SDL_Renderer
*
renderer
,
world_t
*
world
,
textures_t
*
textures
){
//Affichage du score
if
(
textures
->
police
!=
NULL
){
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_message
=
create_SDL_rect
(
20
,
550
,
75
,
50
);
SDL_Rect
zone_score
;
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
){
if
(
get_score
(
world
)
<
100
){
zone_score
=
create_SDL_rect
(
90
,
555
,
40
,
40
);
zone_score
=
create_SDL_rect
(
90
,
555
,
40
,
40
);
}
else
if
(
get_score
(
world
)
<
10000
){
}
else
if
(
get_score
(
world
)
<
10000
){
...
@@ -197,18 +215,15 @@ void apply_texte (SDL_Renderer* renderer, world_t* world, textures_t* textures){
...
@@ -197,18 +215,15 @@ void apply_texte (SDL_Renderer* renderer, world_t* world, textures_t* textures){
}
else
{
}
else
{
zone_score
=
create_SDL_rect
(
90
,
555
,
100
,
40
);
zone_score
=
create_SDL_rect
(
90
,
555
,
100
,
40
);
}
}
//Couleur du texte
SDL_Color
color
=
{
255
,
255
,
0
,
0
};
//affichage en deux partie de score et de la valeur du score, et du timer
SDL_Texture
*
message
;
horloge
=
charger_texte
(
buffer
,
renderer
,
textures
->
police
,
color
);
SDL_Texture
*
points
;
//affichage en deux partie de score et de la valeur du score
message
=
charger_texte
(
"Score : "
,
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!
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
);
points
=
charger_texte
(
score_j
,
renderer
,
textures
->
police
,
color
);
render_texte
(
renderer
,
zone_message
,
message
);
render_texte
(
renderer
,
zone_message
,
message
);
render_texte
(
renderer
,
zone_score
,
points
);
render_texte
(
renderer
,
zone_score
,
points
);
render_texte
(
renderer
,
zone_horloge
,
horloge
);
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
logique.c
+
29
−
0
View file @
dcedd915
...
@@ -75,6 +75,10 @@ int estFini(world_t *world){
...
@@ -75,6 +75,10 @@ int estFini(world_t *world){
return
world
->
gameover
;
return
world
->
gameover
;
}
}
void
setFin
(
world_t
*
world
,
int
indicateur_fin
){
world
->
gameover
=
indicateur_fin
;
}
void
limites_externes
(
sprite_t
*
sprite
){
void
limites_externes
(
sprite_t
*
sprite
){
//Défini les limites selon les murs
//Défini les limites selon les murs
if
(
sprite
->
rect
.
x
+
sprite
->
rect
.
w
>
SCREEN_WIDTH
-
SIZE_MUR
){
if
(
sprite
->
rect
.
x
+
sprite
->
rect
.
w
>
SCREEN_WIDTH
-
SIZE_MUR
){
...
@@ -261,3 +265,28 @@ void calcul_score (world_t* world, sprite_t* ingredient){
...
@@ -261,3 +265,28 @@ void calcul_score (world_t* world, sprite_t* ingredient){
world
->
score
+=
5
;
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
;
}
This diff is collapsed.
Click to expand it.
logique.h
+
24
−
0
View file @
dcedd915
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include
"gestion_fichiers.h"
#include
"gestion_fichiers.h"
#include
<string.h>
#include
<string.h>
#include
"interactions.h"
#include
"interactions.h"
#include
"limits.h"
...
@@ -69,6 +70,14 @@ void init_data(world_t * world);
...
@@ -69,6 +70,14 @@ void init_data(world_t * world);
*/
*/
int
estFini
(
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
* \brief Gère les évenements en fonctions des entrées du joueur
* \param event données des évenements
* \param event données des évenements
...
@@ -143,4 +152,19 @@ int get_score(world_t* world);
...
@@ -143,4 +152,19 @@ int get_score(world_t* world);
*/
*/
void
calcul_score
(
world_t
*
world
,
sprite_t
*
ingredient
);
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
#endif
\ No newline at end of file
This diff is collapsed.
Click to expand it.
main.c
+
4
−
1
View file @
dcedd915
...
@@ -53,8 +53,11 @@ while (estFini(&world)==0){
...
@@ -53,8 +53,11 @@ while (estFini(&world)==0){
gestion_events
(
&
evenements
,
&
world
);
gestion_events
(
&
evenements
,
&
world
);
update_data
(
&
world
);
update_data
(
&
world
);
update_graphics
(
ecran
,
&
world
,
&
textures
);
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
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
);
SDL_Delay
(
150
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment