From 950e548c6a9a24fd3bd963edbd5e90db23f4ebf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Arreola=20Rodr=C3=ADguez?= Date: Mon, 18 Jun 2018 15:37:01 -0500 Subject: [PATCH] =?UTF-8?q?Agrego=20cambios=20de=20nivel=20y=20muerte=20de?= =?UTF-8?q?l=20ping=C3=BCino=20por=20bolsas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/Makefile.am | 3 +- data/images/truck.png | Bin 0 -> 8965 bytes src/beans.c | 124 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 data/images/truck.png diff --git a/data/Makefile.am b/data/Makefile.am index 116a523..8d24566 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -100,7 +100,8 @@ nobase_dist_gamedata_DATA = images/background.png \ images/bag_stack_57.png \ images/bag_stack_58.png \ images/bag_stack_59.png \ - images/bag_stack_60.png + images/bag_stack_60.png \ + images/truck.png # Instalar los archivos .desktop e iconos applicationsdir = $(datadir)/applications diff --git a/data/images/truck.png b/data/images/truck.png new file mode 100644 index 0000000000000000000000000000000000000000..85a9bfb841d5764e3188c393714207716fcdc5f7 GIT binary patch literal 8965 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 literal 0 HcmV?d00001 diff --git a/src/beans.c b/src/beans.c index de181c5..90d8adf 100644 --- a/src/beans.c +++ b/src/beans.c @@ -60,6 +60,14 @@ #define AMASK 0xff000000 #endif +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE !FALSE +#endif + typedef struct _BeanBag { int bag; int throw_length; @@ -147,6 +155,8 @@ enum { IMG_BAG_STACK_59, IMG_BAG_STACK_60, + IMG_TRUCK, + NUM_IMAGES }; @@ -219,7 +229,9 @@ const char *images_names[NUM_IMAGES] = { "images/bag_stack_57.png", "images/bag_stack_58.png", "images/bag_stack_59.png", - "images/bag_stack_60.png" + "images/bag_stack_60.png", + + "images/truck.png" }; enum { @@ -730,10 +742,14 @@ int game_loop (void) { int bags = 0; int penguin_frame = 0; int i, j, k; - + int vidas = 3; + int animacion; + int try_visible = FALSE, gameover_visible = FALSE; + int next_level_visible = FALSE; int level, activator; int bag_activity = 15; - int airbone, max_airbone = 1; + int airbone = 0, max_airbone = 1; + int nivel = 1; int bag_stack = 0; @@ -759,8 +775,25 @@ int game_loop (void) { bag_stack++; bags--; - /* TODO: Incrementar score = score + (nivel * 3) */ + if (next_level_visible == FALSE) { + /* TODO: Incrementar score = score + (nivel * 3) */ + } else { + /* TODO: Incrementar score = score + (nivel * 25) */ + } /* TODO: Sonido de poner bolsa */ + + if (bag_stack == (nivel + 1) * 10) { + /* Activar la pantalla de next_level */ + if (nivel != 5) { + next_level_visible = TRUE; + animacion = 0; + + airbone = 1000; + printf ("Next level visible\n"); + } else { + /* TODO: Fin del juego */ + } + } } break; case SDL_MOUSEBUTTONUP: @@ -776,7 +809,7 @@ int game_loop (void) { if (key == SDLK_ESCAPE) { done = GAME_QUIT; } - if (key == SDLK_a) { + /*if (key == SDLK_a) { if (bags < 9) { bags++; penguin_frame = 0; @@ -794,12 +827,12 @@ int game_loop (void) { add_bag (2); } else if (key == SDLK_r) { add_bag (3); - } + }*/ break; } } - if (bags < 6) { + if (bags < 6 && next_level_visible == FALSE) { SDL_GetMouseState (&handposx, NULL); penguinx = handposx; @@ -838,17 +871,36 @@ int game_loop (void) { j = thisbag->frame - thisbag->throw_length; - if (j < 0) { + if (j < 0 && next_level_visible == FALSE && bags < 6) { /* Calcular aquí la colisión contra el pingüino */ i = collider_hittest (colliders[COLLIDER_BAG_3], thisbag->bag_points[thisbag->frame][1], thisbag->bag_points[thisbag->frame][2], colliders[k], penguinx - 120, 251); if (i == SDL_TRUE) { - bags++; + if (bags < 6) bags++; + k = COLLIDER_PENGUIN_1 + bags; /* Reproducir el sonido de "Agarrar bolsa" */ - - /* Sumar score = score + (nivel * 2); */ + + if (bags >= 6 && (try_visible == FALSE || gameover_visible == FALSE)) { + /* Esta bolsa crasheó al pingüino */ + printf ("Penguin Crash\n"); + if (vidas > 0) { + try_visible = TRUE; + printf ("Try again visible\n"); + animacion = 0; + airbone = 1000; /* El airbone bloquea que salgan más objetos */ + vidas--; + + /* TODO: Reproducir aquí el sonido de golpe */ + } else { + gameover_visible = TRUE; + printf ("Game Over visible\n"); + } + } else { + /* Sumar solo si no crasheó al pinguino + * score = score + (nivel * 2); */ + } airbone--; delete_bag (thisbag); thisbag = nextbag; @@ -953,9 +1005,57 @@ int game_loop (void) { thisbag = thisbag->next; } - /* TODO: Dibujar aquí el camión */ + if (try_visible == TRUE) { + animacion++; + + /* TODO: Dibujar el mensaje de "Intentar de nuevo" */ + + } + + if (next_level_visible == TRUE) { + animacion++; + + /* TODO: Dibujar el mensaje de nivel completo */ + } + + rect.x = 568; + rect.y = 72; + rect.w = images[IMG_TRUCK]->w; + rect.h = images[IMG_TRUCK]->h; + + SDL_BlitSurface (images[IMG_TRUCK], NULL, screen, &rect); + SDL_Flip (screen); + if (try_visible == TRUE && animacion >= 92) { + /* Continuar nivel */ + airbone = 0; + bags = 0; + try_visible = FALSE; + } + + if (next_level_visible == TRUE && animacion >= 88) { + /* Pasar de nivel */ + if (bag_activity > 1) { + bag_activity = bag_activity - 3; + } + + if (nivel != 2) { + max_airbone++; + } + + nivel++; + + airbone = 0; + + bag_stack = 0; + bags = 0; + penguin_frame = 0; + + /* Sumar fishMax = fishMax + 4 */ + next_level_visible = FALSE; + } + now_time = SDL_GetTicks (); if (now_time < last_time + FPS) SDL_Delay(last_time + FPS - now_time);