From 1afce9185d07425740393c6c5601a2152bd1f138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Arreola=20Rodr=C3=ADguez?= Date: Tue, 19 Jun 2018 15:24:02 -0500 Subject: [PATCH] Agrego la vida. --- data/Makefile.am | 3 +- data/collider/Makefile.am | 4 +- data/collider/oneup.col | Bin 0 -> 2264 bytes data/images/oneup.png | Bin 0 -> 4317 bytes src/beans.c | 90 ++++++++++++++++++++++++++++++++++++-- 5 files changed, 92 insertions(+), 5 deletions(-) create mode 100755 data/collider/oneup.col create mode 100644 data/images/oneup.png diff --git a/data/Makefile.am b/data/Makefile.am index e53f5c9..d65bd62 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -125,7 +125,8 @@ nobase_dist_gamedata_DATA = images/background.png \ images/anvil_20.png \ images/anvil_21.png \ images/anvil_22.png \ - images/anvil_23.png + images/anvil_23.png \ + images/oneup.png # Instalar los archivos .desktop e iconos applicationsdir = $(datadir)/applications diff --git a/data/collider/Makefile.am b/data/collider/Makefile.am index cb08656..79b1425 100644 --- a/data/collider/Makefile.am +++ b/data/collider/Makefile.am @@ -11,7 +11,8 @@ nobase_dist_collidergamedata_DATA = \ penguin_8.col \ penguin_9.col \ penguin_10.col \ - bag_3.col + bag_3.col \ + oneup.col noinst_PROGRAMS = penguin-generator collider-generator penguin_generator_SOURCES = generate-penguins.c \ @@ -56,3 +57,4 @@ colliders: collider-generator penguin-generator rm penguin_1.png penguin_2.png penguin_3.png penguin_4.png penguin_5.png penguin_6.png penguin_7.png penguin_8.png penguin_9.png penguin_10.png $(COLLIDER_GENERATOR) $(top_srcdir)/data/images/bag_3.png bag_3.col + $(COLLIDER_GENERATOR) $(top_srcdir)/data/images/oneup.png oneup.col diff --git a/data/collider/oneup.col b/data/collider/oneup.col new file mode 100755 index 0000000000000000000000000000000000000000..7c03c3891cb112079dfde7a4c057c59d48858975 GIT binary patch literal 2264 zcmeH}O-{rx424q-f*r#RdIgp&ka{Inhy_x5v>qi#=(3Bd;rS=2oe5$NfTih-zdXl@ z>!vdVZ=Y~K6utN%_Fg;e?N0X9(S6^^j*jkLmWSKmF1vJe!e%>?d+do7UMFmEu|0NW zh1Us7F1E);R(PGT)y4MM#0swywz=5I-rp>D_bjjsw`D@ zsZ7@cf2a(rLT+3mK4N8mNNbqXD`O+4PU@QT)i9}l#)EL`X3a4eR`x4(AuSb~*D^WA zy;bU`I_^uPweuy8MXQ{7!^{kK%rHWnoY;X616(3;7)o5(s0<~pj5?2W$uR0rVvAu# z*JC!e6Sv(IZLwa14(mFGz5`8dS+WkSQmlO&*6rsIC5Gcw^hE~cYk)SY6=j#VaRm}O{N z&C5{PYEM&T%Qop`_|lMh8&7tiugJDDZP=CV^3LS(RezT;f=QYEKQJqM=P11>d$#OB IoJYfc08!PR!T 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 LNkvXXu0mjfQKV;T literal 0 HcmV?d00001 diff --git a/src/beans.c b/src/beans.c index ee5f9f9..dfa3d31 100644 --- a/src/beans.c +++ b/src/beans.c @@ -185,6 +185,8 @@ enum { IMG_ANVIL_22, IMG_ANVIL_23, + IMG_ONEUP, + NUM_IMAGES }; @@ -284,7 +286,9 @@ const char *images_names[NUM_IMAGES] = { "images/anvil_20.png", "images/anvil_21.png", "images/anvil_22.png", - "images/anvil_23.png" + "images/anvil_23.png", + + "images/oneup.png" }; enum { @@ -435,6 +439,8 @@ enum { COLLIDER_PENGUIN_9, COLLIDER_PENGUIN_10, + COLLIDER_ONEUP, + NUM_COLLIDERS }; @@ -450,7 +456,9 @@ const char *collider_names[NUM_COLLIDERS] = { "collider/penguin_7.col", "collider/penguin_8.col", "collider/penguin_9.col", - "collider/penguin_10.col" + "collider/penguin_10.col", + + "collider/oneup.col" }; const SDL_Color penguin_colors[18] = { @@ -686,6 +694,44 @@ const int anvil_collider_offsets [23][2] = { {482, 399} }; +const int oneup_offsets[35][2] = { + {636, 142}, + {624, 130}, + {611, 119}, + {598, 107}, + {586, 96}, + {573, 84}, + {560, 72}, + {547, 70}, + {534, 68}, + {521, 66}, + {507, 64}, + {494, 62}, + {481, 60}, + {468, 58}, + {454, 56}, + {442, 67}, + {431, 80}, + {420, 93}, + {409, 105}, + {398, 118}, + {392, 139}, + {386, 159}, + {380, 180}, + {373, 201}, + {367, 221}, + {361, 242}, + {355, 263}, + {349, 284}, + {343, 304}, + {337, 325}, + {334, 351}, + {330, 378}, + {327, 404}, + {324, 431}, + {321, 458} +}; + /* Prototipos de función */ int game_intro (void); int game_loop (void); @@ -858,6 +904,7 @@ int game_loop (void) { int airbone = 0, max_airbone = 1; int nivel = 1; int anvil_out = FALSE; + int oneup_toggle = TRUE; int bag_stack = 0; @@ -898,6 +945,7 @@ int game_loop (void) { airbone = 1000; printf ("Next level visible\n"); + oneup_toggle = TRUE; } else { /* TODO: Fin del juego */ } @@ -964,6 +1012,10 @@ int game_loop (void) { add_bag (5); airbone++; anvil_out = TRUE; + } else if (i == 4 && oneup_toggle == TRUE && nivel >= 3 && nivel % 2 == 1) { + add_bag (4); + oneup_toggle = FALSE; + airbone++; } } } @@ -1045,6 +1097,20 @@ int game_loop (void) { thisbag = nextbag; continue; } + } else if (j < 0 && thisbag->bag == 4) { + i = collider_hittest (colliders[COLLIDER_ONEUP], thisbag->object_points[thisbag->frame][0], thisbag->object_points[thisbag->frame][1], colliders[k], penguinx - 120, 251); + + if (i == SDL_TRUE) { + vidas++; + + /* TODO: Reproducir sonido boing */ + + /* TODO: Mostrar la notificación de 1 vida */ + airbone--; + delete_bag (thisbag); + thisbag = nextbag; + continue; + } } if (thisbag->bag <= 3) { @@ -1059,7 +1125,10 @@ int game_loop (void) { } } - if (j >= 35) { + if (thisbag->bag == 4 && j >= 0) { + /* Eliminar la vida */ + delete_bag (thisbag); + } else if (j >= 35) { /* Eliminar esta bolsa */ delete_bag (thisbag); } @@ -1163,11 +1232,23 @@ int game_loop (void) { j = thisbag->frame - thisbag->throw_length; } + rect.w = images[i]->w; + rect.h = images[i]->h; + if (i == IMG_ANVIL_23 && j > 25) { SDL_gfxBlitRGBAWithAlpha (images[i], NULL, screen, &rect, 255 - SDL_ALPHA_OPAQUE * (j - 25) / 10); } else { SDL_BlitSurface (images[i], NULL, screen, &rect); } + } else if (thisbag->bag == 4) { + /* Dibujar la vida */ + i = IMG_ONEUP; + rect.x = thisbag->object_points[thisbag->frame][0]; + rect.y = thisbag->object_points[thisbag->frame][1]; + rect.w = images[i]->w; + rect.h = images[i]->h; + + SDL_BlitSurface (images[i], NULL, screen, &rect); } thisbag = thisbag->next; @@ -1553,6 +1634,9 @@ void add_bag (int tipo) { } else if (tipo == 5) { new->throw_length = 24; new->object_points = anvil_offsets; + } else if (tipo == 4) { + new->throw_length = 35; + new->object_points = oneup_offsets; } /* Ahora sus campos para lista doble ligada */