Commit 4bf77fcb authored by vautrin33u's avatar vautrin33u
Browse files

Ajout d'un 2e état graphique des ingrédients + finalisation des déplacements...

Ajout d'un 2e état graphique des ingrédients + finalisation des déplacements -- Reste menus et timers à faire
parent e37585e5
Ressources/ingredient.bmp

11.1 KB | W: | H:

Ressources/ingredient.bmp

22.1 KB | W: | H:

Ressources/ingredient.bmp
Ressources/ingredient.bmp
Ressources/ingredient.bmp
Ressources/ingredient.bmp
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
......@@ -122,33 +122,60 @@ void apply_ingredients (SDL_Renderer* renderer, textures_t* textures, sprite_t*
if (textures->ingredient !=NULL){
for (int i=0; i<NB_INGREDIENT; i++){
if (est_visible(&ingredients[i])){
//Afficher la texture approprié au sprite détecté
char name = ingredients[i].nom;
switch(name){
case NOM_TOMATE:
temp = create_SDL_rect_from_texture(textures->ingredient, 0, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_PAIN:
temp = create_SDL_rect_from_texture(textures->ingredient, 25, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_STEAK:
temp = create_SDL_rect_from_texture(textures->ingredient, 50, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_SALADE:
temp = create_SDL_rect_from_texture(textures->ingredient, 75, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_FROMAGE:
temp = create_SDL_rect_from_texture(textures->ingredient, 100, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_CORNICHON:
temp = create_SDL_rect_from_texture(textures->ingredient, 125, 0, PLAT_SIZE, PLAT_SIZE);
break;
if (get_cuisson(&ingredients[i]) != CUIT && get_cuisson(&ingredients[i]) != PROPRE){
//Afficher la texture approprié au sprite détecté
switch(name){
case NOM_TOMATE:
temp = create_SDL_rect_from_texture(textures->ingredient, 0, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_PAIN:
temp = create_SDL_rect_from_texture(textures->ingredient, 25, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_STEAK:
temp = create_SDL_rect_from_texture(textures->ingredient, 50, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_SALADE:
temp = create_SDL_rect_from_texture(textures->ingredient, 75, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_FROMAGE:
temp = create_SDL_rect_from_texture(textures->ingredient, 100, 0, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_CORNICHON:
temp = create_SDL_rect_from_texture(textures->ingredient, 125, 0, PLAT_SIZE, PLAT_SIZE);
break;
}
}else{
switch(name){
case NOM_TOMATE:
temp = create_SDL_rect_from_texture(textures->ingredient, 0, 25, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_PAIN:
temp = create_SDL_rect_from_texture(textures->ingredient, 25, 25, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_STEAK:
temp = create_SDL_rect_from_texture(textures->ingredient, 50, 25, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_SALADE:
temp = create_SDL_rect_from_texture(textures->ingredient, 75, 25, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_FROMAGE:
temp = create_SDL_rect_from_texture(textures->ingredient, 100, 25, PLAT_SIZE, PLAT_SIZE);
break;
case NOM_CORNICHON:
temp = create_SDL_rect_from_texture(textures->ingredient, 125, 25, PLAT_SIZE, PLAT_SIZE);
break;
}
}
SDL_Rect* rectangle = &ingredients[i].rect;
SDL_RenderCopy(renderer, textures->ingredient, &temp, rectangle);
......
......@@ -76,50 +76,6 @@ void init_ingredient_cuisine(world_t * world, stock_t *stocks){
}
}
void init_stocks(stock_t* stocks, sprite_t* zone_stockage){
//Initialisation des stocks, des commandes et du score
SDL_Rect temp = get_rect(zone_stockage);
for (int i=0; i<2; i++){
init_ingre(&stocks->stock_pain[i], NOM_PAIN, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
}
for (int i=0; i<QTE_STOCK; i++){
init_ingre(&stocks->stock_tomate[i], NOM_TOMATE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_steak[i], NOM_STEAK, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_salade[i], NOM_SALADE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_fromage[i], NOM_SALADE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_cornichon[i], NOM_CORNICHON, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
}
init_commande(stocks);
}
void init_commande(stock_t *stocks){
//Initialise le tableau afin de générer une commande
for (int i=0; i<INGREDIENT_DISPO; i++){
//Parcours du tableau
switch (aleatoire(0, NB_INGREDIENT-1)){
case 0:
stocks->commande[i] = NOM_TOMATE;
break;
case 1:
stocks->commande[i] = NOM_SALADE;
break;
case 2:
stocks->commande[i] = NOM_STEAK;
break;
case 3:
stocks->commande[i] = NOM_CORNICHON;
break;
case 4:
stocks->commande[i] = NOM_FROMAGE;
break;
}
// Tranche de pain
if (i==0 || i==INGREDIENT_DISPO-1){
stocks->commande[i] = NOM_PAIN;
}
}
}
void handle_collision (sprite_t* spr_move, sprite_t* spr_fixed){
//Gestion de rencontre entre deux sprites
......@@ -180,12 +136,6 @@ void handle_deplacement_ingredient (sprite_t* joueur, sprite_t* ingredient){
}
int aleatoire (int a, int b){
// Fonction générant une valeur aléatoire entre a (inclu) et b (exclu)
return rand()%(b-a)+a;
}
int estFini(world_t *world){
//Défini si le jeu est terminé
return world->gameover;
......@@ -286,26 +236,6 @@ void gestion_events(SDL_Event *event, world_t *world){
break;
case SDLK_SPACE: // POUR POSER DES OBJETS
//Interaction avec le frigo (récupérer les éléments un par un)
//Interaction avec le four
/*
if (has_interaction(joueur, &world->four) && has_collided(joueur, ingredient) && return_state(ingredient) == POSE && get_cuisson(ingredient) == CUIT && is_already_carrying(world->en_cuisine)==SDL_FALSE){
//On retire un ingrédient du feu
set_portable(ingredient);
handle_deplacement_ingredient(joueur, ingredient);
break;
}
*/
//Interaction avec le lavabo
/*
if (has_interaction(joueur, &world->lavabo) && has_collided(joueur, ingredient) && return_state(ingredient) == POSE && get_cuisson(ingredient) == PROPRE && is_already_carrying(world->en_cuisine)==SDL_FALSE){
//On retire un ingrédient du lavabo
set_portable(ingredient);
handle_deplacement_ingredient(joueur, ingredient);
break;
}
*/
if (has_interaction (&world->joueur, &world->frigo)){
interaction_frigo(world->en_cuisine, &world->joueur, &world->frigo);
}
......@@ -393,7 +323,9 @@ void interaction_poser (sprite_t* ingredients, sprite_t* joueur, sprite_t* meubl
if (meuble->nom == NOM_FOUR) set_cuisson(&ingredients[i], CUIT);
if (meuble->nom == NOM_LAVABO) set_cuisson(&ingredients[i], PROPRE);
if (meuble->nom == NOM_COMPT) set_cuisson(&ingredients[i], get_cuisson(&ingredients[i]));
break;
if (burger_est_complet(ingredients) == SDL_FALSE){
break;
}
}
}
}
......@@ -403,7 +335,9 @@ void interaction_reprendre (sprite_t* ingredients, sprite_t* joueur, sprite_t* m
if (has_interaction(joueur, &ingredients[i]) && return_state(&ingredients[i]) == POSE && (get_cuisson(&ingredients[i]) == cuisson_attendue || meuble->nom == MARQUEUR_COMPT)){
set_portable(&ingredients[i]);
handle_deplacement_ingredient(joueur, &ingredients[i]);
break;
if (burger_est_complet(ingredients) == SDL_FALSE && meuble->nom != MARQUEUR_COMPT){
break;
}
}
}
}
......@@ -480,18 +414,17 @@ SDL_bool is_already_carrying (sprite_t* ingredients){
}
SDL_bool burger_est_complet (sprite_t* ingredients){
int compt=0;
int compt=1;
SDL_Rect temp1;
SDL_Rect temp2;
for (int i=0; i<INGREDIENT_DISPO; i++){
temp1 = get_rect(&ingredients[i]);
temp2 = get_rect(&ingredients[i+1]);
if (return_state(&ingredients[i]) != FRIGO && temp1.x == temp2.x && temp1.y == temp2.y) {
if (get_cuisson(&ingredients[i]) != FRIGO && get_cuisson(&ingredients[i+1]) != FRIGO && temp1.x == temp2.x && temp1.y == temp2.y) {
compt++;
}
}
printf("\n Compteur de sprite ingredients les uns sur les autres = %d", compt);
if (compt==4){
if (compt==5){
return SDL_TRUE;
}
return SDL_FALSE;
......
......@@ -51,29 +51,6 @@ typedef struct world_s world_t;
*/
void init_ingredient_cuisine(world_t * world, stock_t *stocks);
/**
* @brief Initialise le tableau de commande
* @param stocks
*/
void init_commande(stock_t *stocks);
/**
* @brief Initialise les stocks et l'état de complétion des burgers
*
* @param stocks Etat des stocks
* @param world Données du monde
*/
void init_stocks(stock_t* stocks, sprite_t* zone_stockage);
/**
* @brief Génération d'une valeur aléatoire entre a (inclus) et b (exclu)
* @param a valeur minimal
* @param b valeur maximal exclu
* @return int
*/
int aleatoire (int a, int b);
/**
* @brief Interaction avec la poubelle
*
......
......@@ -9,3 +9,52 @@
#include "stocks.h"
void init_stocks(stock_t* stocks, sprite_t* zone_stockage){
//Initialisation des stocks, des commandes et du score
SDL_Rect temp = get_rect(zone_stockage);
for (int i=0; i<2; i++){
init_ingre(&stocks->stock_pain[i], NOM_PAIN, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
}
for (int i=0; i<QTE_STOCK; i++){
init_ingre(&stocks->stock_tomate[i], NOM_TOMATE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_steak[i], NOM_STEAK, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_salade[i], NOM_SALADE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_fromage[i], NOM_SALADE, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
init_ingre(&stocks->stock_cornichon[i], NOM_CORNICHON, temp.x, temp.y, PLAT_SIZE, PLAT_SIZE, 0, POSE);
}
init_commande(stocks);
}
void init_commande(stock_t *stocks){
//Initialise le tableau afin de générer une commande
for (int i=0; i<INGREDIENT_DISPO; i++){
//Parcours du tableau
switch (aleatoire(0, NB_INGREDIENT-1)){
case 0:
stocks->commande[i] = NOM_TOMATE;
break;
case 1:
stocks->commande[i] = NOM_SALADE;
break;
case 2:
stocks->commande[i] = NOM_STEAK;
break;
case 3:
stocks->commande[i] = NOM_CORNICHON;
break;
case 4:
stocks->commande[i] = NOM_FROMAGE;
break;
}
// Tranche de pain
if (i==0 || i==INGREDIENT_DISPO-1){
stocks->commande[i] = NOM_PAIN;
}
}
}
int aleatoire (int a, int b){
// Fonction générant une valeur aléatoire entre a (inclu) et b (exclu)
return rand()%(b-a)+a;
}
\ No newline at end of file
......@@ -29,7 +29,28 @@ struct stock_s{
*/
typedef struct stock_s stock_t;
/**
* @brief Initialise le tableau de commande
* @param stocks
*/
void init_commande(stock_t *stocks);
/**
* @brief Initialise les stocks et l'état de complétion des burgers
*
* @param stocks Etat des stocks
* @param world Données du monde
*/
void init_stocks(stock_t* stocks, sprite_t* zone_stockage);
/**
* @brief Génération d'une valeur aléatoire entre a (inclus) et b (exclu)
* @param a valeur minimal
* @param b valeur maximal exclu
* @return int
*/
int aleatoire (int a, int b);
#endif
\ No newline at end of file
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