From 2db613871d9ff2d3c5e0ab8b09290a338592ce8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Arreola=20Rodr=C3=ADguez?= Date: Fri, 25 May 2018 16:36:04 -0500 Subject: [PATCH] Prueba de lanzamiento de las 4 bolsas. --- data/Makefile.am | 6 +- data/images/bag_1.png | Bin 0 -> 3359 bytes data/images/bag_2.png | Bin 0 -> 2473 bytes data/images/bag_3.png | Bin 0 -> 2619 bytes data/images/bag_4.png | Bin 0 -> 3833 bytes src/beans.c | 227 +++++++++++++++++++++++++++++++++++++++++- 6 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 data/images/bag_1.png create mode 100644 data/images/bag_2.png create mode 100644 data/images/bag_3.png create mode 100644 data/images/bag_4.png diff --git a/data/Makefile.am b/data/Makefile.am index 9552684..f238fc4 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -36,7 +36,11 @@ nobase_dist_gamedata_DATA = images/background.png \ images/penguin_8_3_front.png \ images/penguin_8_back.png \ images/penguin_8_color.png \ - images/plataform.png + images/plataform.png \ + images/bag_1.png \ + images/bag_2.png \ + images/bag_3.png \ + images/bag_4.png # Instalar los archivos .desktop e iconos applicationsdir = $(datadir)/applications diff --git a/data/images/bag_1.png b/data/images/bag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb087b4f305cb50be7a5a53935b5dc1fa31e921 GIT binary patch literal 3359 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 literal 0 HcmV?d00001 diff --git a/data/images/bag_3.png b/data/images/bag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..887e5e13bb1fbb754ecc2e761528ce895d3b3fbe GIT binary patch literal 2619 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 literal 0 HcmV?d00001 diff --git a/src/beans.c b/src/beans.c index 71b275d..dab4384 100644 --- a/src/beans.c +++ b/src/beans.c @@ -55,18 +55,39 @@ #define AMASK 0xff000000 #endif +typedef struct _BeanBag { + int bag; + int throw_length; + int frame; + + const int (*bag_points)[3]; + + struct _BeanBag *prev; + struct _BeanBag *next; +} BeanBag; + /* Enumerar las imágenes */ enum { IMG_BACKGROUND, IMG_PLATAFORM, + IMG_BAG_1, + IMG_BAG_2, + IMG_BAG_3, + IMG_BAG_4, + NUM_IMAGES }; /* Los nombres de archivos */ const char *images_names[NUM_IMAGES] = { "images/background.png", - "images/plataform.png" + "images/plataform.png", + + "images/bag_1.png", + "images/bag_2.png", + "images/bag_3.png", + "images/bag_4.png" }; enum { @@ -224,6 +245,132 @@ const SDL_Color penguin_colors[18] = { {46, 71, 170} }; +const int bag_0_points[31][3] = { + {0, 638, 108}, + {0, 613, 98}, + {0, 588, 87}, + {0, 565, 80}, + {0, 543, 72}, + {0, 523, 68}, + {0, 504, 65}, + {0, 485, 61}, + {1, 493, 28}, + {1, 479, 27}, + {1, 465, 27}, + {1, 456, 28}, + {2, 427, 43}, + {2, 413, 46}, + {2, 400, 49}, + {2, 387, 51}, + {2, 371, 59}, + {2, 355, 66}, + {2, 338, 73}, + {2, 322, 88}, + {2, 305, 102}, + {2, 288, 117}, + {2, 274, 139}, + {2, 259, 161}, + {2, 245, 183}, + {2, 234, 211}, + {2, 223, 239}, + {2, 212, 268}, + {2, 204, 300}, + {2, 196, 333}, + {3, 165, 408} +}; + +const int bag_1_points[22][3] = { + {0, 633, 209}, + {0, 622, 168}, + {0, 610, 134}, + {0, 598, 107}, + {0, 586, 87}, + {0, 574, 74}, + {0, 563, 69}, + {0, 558, 68}, + {1, 579, 38}, + {1, 571, 42}, + {1, 563, 51}, + {1, 554, 65}, + {2, 527, 141}, + {2, 520, 164}, + {2, 512, 187}, + {2, 505, 215}, + {2, 498, 246}, + {2, 491, 280}, + {2, 484, 317}, + {2, 478, 358}, + {2, 472, 402}, + {3, 441, 420} +}; + +const int bag_2_points[28][3] = { + {0, 633, 229}, + {0, 620, 202}, + {0, 606, 175}, + {0, 593, 154}, + {0, 579, 132}, + {0, 565, 116}, + {0, 550, 100}, + {0, 536, 89}, + {1, 548, 49}, + {1, 535, 46}, + {1, 523, 43}, + {1, 510, 39}, + {2, 477, 99}, + {2, 461, 104}, + {2, 444, 114}, + {2, 427, 126}, + {2, 413, 140}, + {2, 399, 160}, + {2, 385, 179}, + {2, 370, 199}, + {2, 357, 224}, + {2, 344, 249}, + {2, 331, 273}, + {2, 319, 304}, + {2, 307, 335}, + {2, 294, 365}, + {2, 282, 396}, + {3, 251, 405} +}; + +const int bag_3_points[33][3] = { + {0, 647, 305}, + {0, 620, 267}, + {0, 595, 236}, + {0, 570, 204}, + {0, 546, 179}, + {0, 522, 153}, + {0, 499, 135}, + {0, 477, 116}, + {1, 481, 71}, + {1, 463, 63}, + {1, 444, 54}, + {1, 429, 50}, + {2, 397, 106}, + {2, 389, 107}, + {2, 381, 108}, + {2, 373, 109}, + {2, 365, 110}, + {2, 354, 114}, + {2, 343, 117}, + {2, 330, 125}, + {2, 316, 132}, + {2, 302, 145}, + {2, 288, 158}, + {2, 275, 176}, + {2, 261, 194}, + {2, 249, 217}, + {2, 237, 240}, + {2, 227, 267}, + {2, 217, 294}, + {2, 208, 326}, + {2, 198, 358}, + {2, 189, 389}, + {3, 141, 422} +}; + /* Prototipos de función */ int game_intro (void); int game_loop (void); @@ -231,6 +378,7 @@ int game_finish (void); void setup (void); SDL_Surface * set_video_mode(unsigned flags); void setup_and_color_penguin (void); +void add_bag (int tipo); /* Variables globales */ SDL_Surface * screen; @@ -243,6 +391,9 @@ int color_penguin = 0; Mix_Chunk * sounds[NUM_SOUNDS]; Mix_Music * mus_carnie; +BeanBag *first_bag = NULL; +BeanBag *last_bag = NULL; + int main (int argc, char *argv[]) { /* Recuperar las rutas del sistema */ initSystemPaths (argv[0]); @@ -375,6 +526,7 @@ int game_loop (void) { Uint32 last_time, now_time; SDL_Rect rect; int penguinx, handposx; + BeanBag *thisbag; int bags = 0; int penguin_frame = 0; @@ -421,6 +573,14 @@ int game_loop (void) { bags--; penguin_frame = 0; } + } else if (key == SDLK_q) { + add_bag (0); + } else if (key == SDLK_w) { + add_bag (1); + } else if (key == SDLK_e) { + add_bag (2); + } else if (key == SDLK_r) { + add_bag (3); } break; } @@ -435,6 +595,14 @@ int game_loop (void) { penguinx = 555; } + /* Procesar las bolsas */ + thisbag = first_bag; + while (thisbag != NULL) { + thisbag->frame++; + + thisbag = thisbag->next; + } + SDL_BlitSurface (images[IMG_BACKGROUND], NULL, screen, NULL); if (bags >= 0 && bags < 4) { @@ -475,6 +643,29 @@ int game_loop (void) { SDL_BlitSurface (images[IMG_PLATAFORM], NULL, screen, &rect); + /* Dibujar las bolsas de café, arriba de la plataforma, por detrás del camión */ + thisbag = first_bag; + while (thisbag != NULL) { + if (thisbag->frame < thisbag->throw_length) { + /* Dibujar la bolsa */ + i = IMG_BAG_1 + thisbag->bag_points[thisbag->frame][0]; + rect.x = thisbag->bag_points[thisbag->frame][1]; + rect.y = thisbag->bag_points[thisbag->frame][2]; + } else { + i = IMG_BAG_4; + rect.x = thisbag->bag_points[thisbag->throw_length][1]; + rect.y = thisbag->bag_points[thisbag->throw_length][2]; + } + + rect.w = images[i]->w; + rect.h = images[i]->h; + + SDL_BlitSurface (images[i], NULL, screen, &rect); + + thisbag = thisbag->next; + } + + /* TODO: Dibujar aquí el camión */ SDL_Flip (screen); now_time = SDL_GetTicks (); @@ -764,3 +955,37 @@ void setup_and_color_penguin (void) { temp_penguins[IMG_PENGUIN_8_1_FRONT] = temp_penguins[IMG_PENGUIN_8_2_FRONT] = temp_penguins[IMG_PENGUIN_8_3_FRONT] = NULL; } +void add_bag (int tipo) { + BeanBag *new; + + new = (BeanBag *) malloc (sizeof (BeanBag)); + + new->bag = tipo; + new->frame = -1; + + if (tipo == 0) { + new->throw_length = 30; + new->bag_points = bag_0_points; + } else if (tipo == 1) { + new->throw_length = 21; + new->bag_points = bag_1_points; + } else if (tipo == 2) { + new->throw_length = 27; + new->bag_points = bag_2_points; + } else if (tipo == 3) { + new->throw_length = 32; + new->bag_points = bag_3_points; + } + + /* Ahora sus campos para lista doble ligada */ + new->next = NULL; + new->prev = last_bag; + + if (last_bag == NULL) { + first_bag = last_bag = new; + } else { + last_bag->next = new; + last_bag = new; + } +} +