From 2fd433425989390c3fc5d0fc0326148cbbd0c2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Sun, 22 Aug 2021 16:15:10 +0200 Subject: [PATCH] added poerup and helper --- media/gfx/items.png | Bin 2426 -> 2356 bytes source/const.h | 10 +++++ source/game.cpp | 107 ++++++++++++++++++++++++++++++++++++-------- source/game.h | 20 +++++++++ source/item.cpp | 11 ++++- source/item.h | 58 ++++++++++-------------- source/lang.h | 2 +- 7 files changed, 152 insertions(+), 56 deletions(-) diff --git a/media/gfx/items.png b/media/gfx/items.png index f5a5704eb70e1b358b343dff659d55f8e0bcbeb2..f81f0aa9a603883a0027401bf96e26f993358f83 100644 GIT binary patch delta 2333 zcmV+&3F7wp60{PKFnIoxb z<-}o&KXM{BSSVkJEsGRI$x&n?AQgm^KLH5?aZrSeEXRDQA~!h_3mL^Rb>v(zNz{!j zpHvmx?yTiX6p*e2ktm_0|0Q}ubK^m zil(C^+nR;0%+cWK1WrA4+d|<)26g|70~YMV$TB20p4I!ZK(*CS5^ zE9=85e#PW@0KkonakZ@ZP?hkzd=~o*PsmRI5F_6Brg6x!%&m{bV!kB7FWl&aRlXjI zqEHeLtHIkU9{}nbFg1}u9j7l=`Bd=~ED=ua{sGOp=YK`EKwcY`{8afzUf;{_;FY&9 zzG)nd=|;Xh;g;J009EmJym|JLde7E};mQg+!j{LrSFcYDuQDy;LBI0N+OS)KTaaZL2agYt{UN_jzxq!MuR^NhX7u#`XkNxx0l?_+iGW%G#}Aqy z7K`P!fKy}KdRdlLKLCJlwgb<%fVo`@|C*7&4S$%e{`vWNgu`J&Th0RKa7wkU` z+0}1VW`}+I_F@12{Te^O3{M?y!oBO(;hVX2IEoQGb+`$Gul-A{JGyfOFMsj~zL{GG z9Djydr-xq^ZH8sVc93_ZkW3~4z;p#r{Pb?l7tnas6B%bhIqiA-dN>?LcXv0sy1H!J z9^E+t02rw5Q_EidJ#w5(|@PY_FAXqxSXOV+~cd5fPnyoD40%UGMUuG z0u)6-b$%O|+m#~$us{S2CNe;M0|2A)X<1MIkCxWr#>Tkqmw?kRfPv~hY@c(F1gZHH zaK=BOVNWdpjRFEdwMB?nwE_$YxX3GC9}Ud5W+iF`tVlqWZx#(a(D6@Pe=m2PGk^27 z%r$`J_vE*TdklTIHz)AiJMWv$k1WgReIo^={G)upB@18&o~hMO0!xCP-$P3TX4RX8 zg7qW-#6!U&hrY*#-fIZO&tc+h?iv6>@sRF*p*|E30UgX((ou5o#pm(dJMVMnp!baw zrhKM+fFXe0$~WRZ^(v8Qz*uWW-G2rs^sC&iM@j+!n9`Ygk;5QL0wDLDuUEY2dlUke z1UyXt(SOPZ05z0a$iut=nT30uqLjzMUX5Q=et-aFg9HG}Kfa=}Rx}?V_Vab=!n5l& zb%{g+#>O(570}k!CJhb_I({)S)1ZkHNG))*g09?Et9g$#-%b~_0{86MLw{yxXVKr^ zFZ8^kC|nB=i9~#90fa)qY(4;mynH1A7L-Dj&&dZMPDr3pJVkv2$P9=G5m?2uP9QCJ zLWIkgFO#)v*9x~+6or`iQi`GwKa#+;vjD1mJ@QAvLL}fSpGAEG$WVruk$@`MDj(p= zUA3f8YhVSce5-r_Ka!y6P=7E0+<$+aWxb*(7#tk5RIaV^De45szWctp#$+gW1La(Rqyqi>|+QHtl_188h4DUem0eF9=#3(b0&IbU1ix;PeNIn3d zQ5<(AEcJW*g zKZR@g06Z&@_W>jTsDJ*@@a?Xd2&n}U8Ojimd;ne`h*|-Wd;qi6Uy^(PpFuqfD8vc; z`I$BPiPVIGSprZ*R|DC9oA;{*c}(&F3JnEQ@Ra{)WF_JKFvRLU6t6|i$uUh|n}55J zSmgs8{j2{@1l`LA7|Q^FluRa71?Ac@V~ziZX3ui zoqShL0|P8xSbrvjG_LF@TEO`A{(_$knM-ew53osae01TfgX@7whg%42a7Rbx-FA5)^(k+me z<6jg$Kp?-ueSkoIh5G>ImhbmCz>@a?$}QjTae!hhkSzi1!ijE#I|KRUlW$3YVh%Fg zKp@|H`N45;g+s^(DCAhuP4))zy^}BeA4F{LY{5X^5Y}&e005Bgdr+-w?fg>H_Up;7 zM7tG6Ab;N*`L1jM?8}rA&VSD44$3uNFW~sUh*@CQ!X(tiKXB`P9Lc9YLiJ+BS;?=9 ze}$>@f8e}RY2@edAg9bZgb6UvH-v{DeOSFuy)vm@v*iHr#phoX{6c~J(#m&a0lXMk zAiuowg$Pgy-@}zEKZpZVIJg$T$&VPkKp?+#@)rLOdUtpHFTGA<00000NkvXXu0mjf D%NlL} delta 2403 zcmV-p37qz{68aL5FnP9B(iWKAswJxloOUN z78fqI+C(ODi4~GO_iGx1`1hKVNO$$*Vntr&O_3Yo7yW73n`t~PT?C#9Y+kdz3H*em)d4~i5;Z&F) zPh{FMlG%0rSXTXbD0UpDpF{M1t9Mzbe77NmQ(^Mu?1*|{X6rKB8&-UL9RRTQjuwMb z;Z&Gp+A`2x%S(Cs0w*8(*}}z%G}he=1K__%djH6-?={z34pa->uOI8te>{rW*;$;~ zaz;q@_@;5wwtuFRO`ary5CN#sXSOa=j{z+SsPRWfM-hoc)IOn5NSFlSRG4TCuSbpu zcHW0I{Ic_3006FUh^p6G4pa+2%cqe~@tFJ=05Rf?ZyJXz%ckv-NW_yQsB&Tu*7$lT zib6?1?3Cvk9{?I-n4Cysoyl0N@u}e{SR#z<`W`L1`+r52K(jt9`Kj>_z5a^%0DpK3 zj? zZbu;6fQeIQu>Q8&0RYv}4!n8lf_l!j2ciu~=!kUa^;dA=l9qgITja>Fs;^f_AVdJW zxIjPqBY%+yLZOgpUp79ldI^vJ@~V1#bhyUyni=#n->MJ0Bsc|Gma+fHFgjY|rtSNW z3`3S>P*0IeB|Sj`0|D4I-YLxO1Zv+iZ`05Iqr){wcHWAf{vWKbFr24g&V_%iNPpl2tY-iG{5*oeprJ481)6u&p!%s* zSh8{zn)hdq0oa}|S-A>0IineulE4gXVC*HR1mJ!C>0#$76h#35%~J4_df>)8z%4KE zKMmR0Z+DG{J$v?G@7}$dIKT=|9&E~XyO{v-H$ zZhsAM5NewqUNy88mJ~ZcE|5YZkpKY889;I4oop)ngF$q6ccZJT zi`)0`v&R7d1GRnXwU^(2MAK*A)1PVjE(REu0GCe#q>ULYb@BT+A4M*?bmt8C!D&VS+BUw^X4 zSvTLn90OQ-Pi~30$1rwBOB~O={jTNvk!2aZZzO@FcZ?4>=Wn8EA>X z%zCR-u$}~fcq;h#fvZ^Gdl`Y~8BCnY9s@ui8ql3Dv+re{jTXd z=zSxJNsk#HUM}r~pXIy}DG2~zQs?SLHiIY$fb4g^-teN& zQ3zNPm|^Po-ZMS`sHxOKZZ=cMD&3neO1T~Emj0shefTIFBmh|Yw~H!kMe6|~KVFm0 z{`NjiTRa}a*jQRK1KQi$rNP0$ydR9r#58#VsTFz6po@1kXr5#Bw^Iepz<=Glcaz!K zS@ie!3*E0Mim3+(g+iY6079u?wjO{&Ub>tB3r3;FH>n38`H({s zK_I=J4-uxPr%8Q%y>Nd;QHWJ6r6>yVA_*MZ3!ui=BexYSL;_RevuKQg45f(`38<0n z>H#j^)j$gM26mvvx2p&6B7X^rP6Y$N{r9i4ZC4ZpgM)*%#^oBHqA>vb!0gYG7-dG$^#A~H?%X61 zsRsZwhBKWBi@hFzdWu9M;R#Pr_Idz7JNrfJ0obKLKchw9^im*N4}Uzu2VOlulnsvT2A(^o-_19| zP!I3|)I5UJ3W>~UBYR#w0Q)Jp`r9eVE)FpB03z$Z8}$IAqoah41fcW(Q z_V7ydPvKZSfSDJ_#eV=20Mx!`_;%O42&okk8A=n8dH}OT5cL8g^#E40za;el9)r3U zP)HE?<8M~$U!*1#%o2biyb{QKXFaZ(#-GK)V2A4mO)8e{`BKZTRDb=|OkgRLUt7g@du}RkC%;nlS3Lmh_IOM!1R}~Kw_RKg`IV}_AraIb z_^0E-2mkwka9>}3Y2`bz8RX;t7nbz^P0Krr9(?>-f5G?q@=GJ%wjgBN_EyWbfxaPb zd$I84yDy)+1f1UZI{?5lzh0sKvH19-UAFDTqTKR%&+GEJC1D#+{}}-A*AHe) z+qXV(z_z_ulv_S;eBSeUT|U{V6o2t9?I>3+?Mah034Lt1Nkw4 z9|O25-;V(}D7OdlV*oz}a8VmD>wgGwgWbOT^2!$?z(C&+HveL?(10iYexj%c^5vISzOV;yL$Q3|%XddUmjF&i zv|rwA#z<-&b?GYMU&=Zyzec)}*ROOJyZ$8$0$f?;uf%SaN~}hHjdVr2O6p23o67g1 z{ss?_&yN`L0jvCp#OId%+>#GKx=QNs()>}|PL-y=>JFZIt=aXTMDvs{Cn{C{{{c12 VWRB$bgg*cP002ovPDHLkV1iiLm$(1` diff --git a/source/const.h b/source/const.h index 9a1c042..7c42b0a 100644 --- a/source/const.h +++ b/source/const.h @@ -286,6 +286,15 @@ const int MULTIPLIER_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2; #define ITEM_POWER_BALL 6 #define ITEM_COFFEE_MACHINE 7 +// Porcentaje de aparición de los objetos +#define ITEM_POINTS_1_DISK_ODDS 10 +#define ITEM_POINTS_2_GAVINA_ODDS 6 +#define ITEM_POINTS_3_PACMAR_ODDS 3 +#define ITEM_CLOCK_ODDS 5 +#define ITEM_COFFEE_ODDS 5 +#define ITEM_POWER_BALL_ODDS 0 +#define ITEM_COFFEE_MACHINE_ODDS 4 + // Cantidad de objetos simultaneos #define MAX_ITEMS 5 @@ -324,6 +333,7 @@ const int MULTIPLIER_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2; #define INSTRUCTIONS_COUNTER 600 #define DEATH_COUNTER 350 #define SHAKE_COUNTER 10 +#define HELP_COUNTER 1000 // Colores const color_t bgColor = {0x27, 0x27, 0x36}; diff --git a/source/game.cpp b/source/game.cpp index e2430f7..b8bfbc1 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -219,6 +219,7 @@ Game::~Game() JA_DeleteSound(mSoundBubble4); JA_DeleteSound(mSoundClock); JA_DeleteSound(mSoundPowerBall); + JA_DeleteSound(mSoundCollision); JA_DeleteMusic(mMusicPlaying); } @@ -253,7 +254,7 @@ void Game::init() mMenaceThreshold = 0; mScore = 0; mHiScoreAchieved = false; - mCurrentStage = 9; + mCurrentStage = 0; mStageBitmapCounter = STAGE_COUNTER; mDeathCounter = DEATH_COUNTER; mExplosionTime = false; @@ -269,7 +270,18 @@ void Game::init() mEffect.flash = false; mEffect.shake = false; mEffect.shakeCounter = SHAKE_COUNTER; + mHelper.needCoffee = false; + mHelper.needCoffeeMachine = false; + mHelper.needPowerBall = false; + mHelper.counter = HELP_COUNTER; + mHelper.itemPoints1Odds = ITEM_POINTS_1_DISK_ODDS; + mHelper.itemPoints2Odds = ITEM_POINTS_2_GAVINA_ODDS; + mHelper.itemPoints3Odds = ITEM_POINTS_3_PACMAR_ODDS; + mHelper.itemClockOdds = ITEM_CLOCK_ODDS; + mHelper.itemCoffeeOdds = ITEM_COFFEE_ODDS; + mHelper.itemCoffeeMachineOdds = ITEM_COFFEE_MACHINE_ODDS; mPowerBallEnabled = false; + mCoffeeMachineEnabled = false; mPostFade = 0; if (mDemo.enabled) @@ -468,6 +480,7 @@ bool Game::loadMedia() mSoundPlayerCollision = JA_LoadSound(mFileList[19].c_str()); mSoundPowerBall = JA_LoadSound(mFileList[23].c_str()); mSoundStageChange = JA_LoadSound(mFileList[20].c_str()); + mSoundCollision = JA_LoadSound(mFileList[21].c_str()); // Musicas mMusicPlaying = JA_LoadMusic(mFileList[4].c_str()); @@ -1617,10 +1630,14 @@ void Game::updateDeath() } // Animación - if ((mDeathCounter / 5) % 2 == 0) - mSmartSprite[mDeathIndex]->setSpriteClip(0, 0, 24, 24); - else - mSmartSprite[mDeathIndex]->setSpriteClip(24, 0, 24, 24); + if ((mDeathCounter / 5) % 4 == 0) + mSmartSprite[mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24); + else if ((mDeathCounter / 5) % 4 == 1) + mSmartSprite[mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24); + else if ((mDeathCounter / 5) % 4 == 2) + mSmartSprite[mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24); + else if ((mDeathCounter / 5) % 4 == 3) + mSmartSprite[mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24); // Rebote en los laterales if (mSmartSprite[mDeathIndex]->getVelX() > 0) @@ -2026,6 +2043,7 @@ void Game::checkPlayerItemCollision() case ITEM_COFFEE_MACHINE: mPlayer->setPowerUp(true); JA_PlaySound(mSoundItemPickup); + mCoffeeMachineEnabled = false; break; default: @@ -2055,7 +2073,10 @@ void Game::checkBulletBalloonCollision() if ((droppeditem != NO_KIND) && !(mDemo.enabled) && !(mDemo.recording)) { createItem(mBalloon[i]->getPosX(), mBalloon[i]->getPosY(), droppeditem); - JA_PlaySound(mSoundItemDrop); + if (droppeditem != ITEM_COFFEE_MACHINE) + JA_PlaySound(mSoundItemDrop); + else + mCoffeeMachineEnabled = true; } break; } @@ -2105,7 +2126,11 @@ void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp) void Game::updateItems() { for (int i = 0; i < MAX_ITEMS; i++) - mItem[i]->update(); + if (mItem[i]->update() == 1) + { + JA_PlaySound(mSoundCollision); + mEffect.shake = true; + } } // Pinta los items activos @@ -2135,39 +2160,56 @@ void Game::resetItems() // Devuelve un item en función del azar Uint8 Game::dropItem() { - if (mPlayer->isPowerUp()) + /*if (mPlayer->isPowerUp() || (mCoffeeMachineEnabled)) return NO_KIND; else - return ITEM_COFFEE_MACHINE; + return ITEM_COFFEE_MACHINE;*/ - const Uint8 luckyNumber = rand() % 99; + const Uint8 luckyNumber = rand() % 100; const Uint8 item = rand() % 6; switch (item) { case 0: - if (luckyNumber < 10) + if (luckyNumber < mHelper.itemPoints1Odds) return ITEM_POINTS_1_DISK; break; case 1: - if (luckyNumber < 6) + if (luckyNumber < mHelper.itemPoints2Odds) return ITEM_POINTS_2_GAVINA; break; case 2: - if (luckyNumber < 3) + if (luckyNumber < mHelper.itemPoints3Odds) return ITEM_POINTS_3_PACMAR; break; case 3: - if (luckyNumber < 5) + if (luckyNumber < mHelper.itemClockOdds) return ITEM_CLOCK; break; case 4: - if (luckyNumber < 5) + if (luckyNumber < mHelper.itemCoffeeOdds) + { + mHelper.itemCoffeeOdds = ITEM_COFFEE_ODDS; return ITEM_COFFEE; + } + else + { + if (mHelper.needCoffee) + mHelper.itemCoffeeOdds++; + } break; case 5: - if (luckyNumber < 4) - return ITEM_COFFEE_MACHINE; + if (luckyNumber < mHelper.itemCoffeeMachineOdds) + { + mHelper.itemCoffeeMachineOdds = ITEM_COFFEE_MACHINE_ODDS; + if ((!mCoffeeMachineEnabled) && (mHelper.needCoffeeMachine)) + return ITEM_COFFEE_MACHINE; + } + else + { + if (mHelper.needCoffeeMachine) + mHelper.itemCoffeeMachineOdds++; + } break; default: break; @@ -2217,7 +2259,10 @@ void Game::updateShakeEffect() if (mEffect.shakeCounter > 0) mEffect.shakeCounter--; else + { mEffect.shake = false; + mEffect.shakeCounter = SHAKE_COUNTER; + } } } @@ -2464,6 +2509,9 @@ void Game::updatePlayField() updateEnemyDeployCounter(); updateShakeEffect(); + // Actualiza el ayudante + updateHelper(); + // Comprueba las colisiones entre globos y balas checkBulletBalloonCollision(); @@ -2512,7 +2560,7 @@ void Game::updateBackground() // Dibuja el fondo void Game::renderBackground() { - const float gradientNumber = std::min(((float)mBalloonsPopped / 900.0f), 3.0f); + const float gradientNumber = std::min(((float)mBalloonsPopped / 1000.0f), 3.0f); const float percent = gradientNumber - (int)gradientNumber; const int alpha = std::max((255 - (int)(255 * percent)), 0); @@ -3212,4 +3260,27 @@ void Game::updateGameCompleted() if (mGameCompletedCounter == 500) mSection.subsection = GAME_SECTION_GAMEOVER; +} + +// Actualiza las variables de ayuda +void Game::updateHelper() +{ + // Solo ofrece ayuda cuando la amenaza o la velocidad es elevada + if (mMenaceCurrent > 15) + { + if (mPlayer->getCoffees() == 0) + mHelper.needCoffee = true; + else + mHelper.needCoffee = false; + + if (!mPlayer->isPowerUp()) + mHelper.needCoffeeMachine = true; + else + mHelper.needCoffeeMachine = false; + } + else + { + mHelper.needCoffee = false; + mHelper.needCoffeeMachine = false; + } } \ No newline at end of file diff --git a/source/game.h b/source/game.h index ce4f808..a2797e5 100644 --- a/source/game.h +++ b/source/game.h @@ -65,6 +65,20 @@ private: Uint8 shakeCounter; // Contador para medir el tiempo que dura el efecto }; + struct helper_t + { + bool needCoffee; // Indica si se necesitan cafes + bool needCoffeeMachine; // Indica si se necesita PowerUp + bool needPowerBall; // Indica si se necesita una PowerBall + int counter; // Contador para no dar ayudas consecutivas + int itemPoints1Odds; // Probabilidad de aparición del objeto + int itemPoints2Odds; // Probabilidad de aparición del objeto + int itemPoints3Odds; // Probabilidad de aparición del objeto + int itemClockOdds; // Probabilidad de aparición del objeto + int itemCoffeeOdds; // Probabilidad de aparición del objeto + int itemCoffeeMachineOdds; // Probabilidad de aparición del objeto + }; + SDL_Renderer *mRenderer; // El renderizador de la ventana std::string *mFileList; // Lista de ficheros con los recursos std::string *mTextStrings; // Vector con los textos del juego @@ -126,6 +140,7 @@ private: JA_Sound mSoundBubble4; // Sonido para cuando el jugador muere JA_Sound mSoundClock; // Sonido para cuando se detiene el tiempo con el item reloj JA_Sound mSoundPowerBall; // Sonido para cuando se explota una Power Ball + JA_Sound mSoundCollision; // Sonido para cuando la máquina de café toca el suelo JA_Music mMusicPlaying; // Musica de fondo @@ -158,7 +173,9 @@ private: Uint8 mEnemyDeployCounter; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero float mEnemySpeed; // Velocidad a la que se mueven los enemigos effect_t mEffect; // Variable para gestionar los efectos visuales + helper_t mHelper; // Variable para gestionar las ayudas bool mPowerBallEnabled; // Indica si hay una powerball ya activa + bool mCoffeeMachineEnabled; // Indica si hay una máquina de café en el terreno de juego Uint8 mPostFade; // Qué hacer al acabar el fade float mSin[360]; // Vector con los valores del seno para 360 grados bool mGameCompleted; // Indica si se ha completado la partida, llegando al final de la ultima pantalla @@ -471,6 +488,9 @@ public: // Actualiza el tramo final de juego, una vez completado void updateGameCompleted(); + + // Actualiza las variables de ayuda + void updateHelper(); }; #endif diff --git a/source/item.cpp b/source/item.cpp index 1242161..181463d 100644 --- a/source/item.cpp +++ b/source/item.cpp @@ -29,6 +29,7 @@ void Item::init(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer * mVelY = -4.0f; mAccelX = 0.0f; mAccelY = 0.2f; + mStatus = 0; mCollider.r = mWidth / 2; shiftColliders(); @@ -83,7 +84,8 @@ void Item::init(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer * case ITEM_COFFEE_MACHINE: mWidth = 32; mHeight = 32; - mPosX = (rand() % (PLAY_AREA_WIDTH - mWidth - 3)) + 3; + //mPosX = (rand() % (PLAY_AREA_WIDTH - mWidth - 3)) + 3; + mPosX = (((int)x + (PLAY_AREA_WIDTH / 2)) % (PLAY_AREA_WIDTH - mWidth)); mPosY = PLAY_AREA_TOP - mHeight; mVelX = 0.0f; mVelY = -2.0f; @@ -142,6 +144,8 @@ void Item::render() // Actualiza la posición y estados del globo void Item::move() { + mStatus = 0; + // Calcula la nueva posición mPosX += mVelX; mPosY += mVelY; @@ -182,6 +186,7 @@ void Item::move() mAccelX = 0; mAccelY = 0; mPosY = PLAY_AREA_BOTTOM - mHeight; + if (mClass == ITEM_COFFEE_MACHINE) mStatus = 1; } // Actualiza la posición del sprite @@ -196,7 +201,7 @@ void Item::erase() } // Actualiza el objeto a su posicion, animación y controla los contadores -void Item::update() +int Item::update() { if (mEnabled) { @@ -206,6 +211,8 @@ void Item::update() updateTimeToLive(); checkTimeToLive(); } + + return mStatus; } // Actualiza el contador diff --git a/source/item.h b/source/item.h index 0c38a48..0da7b0c 100644 --- a/source/item.h +++ b/source/item.h @@ -9,6 +9,26 @@ // Clase AnimatedSprite class Item { +private: + float mPosX; // Posición X del objeto + float mPosY; // Posición Y del objeto + Uint8 mWidth; // Ancho del objeto + Uint8 mHeight; // Alto del objeto + float mVelX; // Velocidad en el eje X + float mVelY; // Velocidad en el eje Y + float mAccelX; // Aceleración en el eje X + float mAccelY; // Aceleración en el eje Y + int mStatus; // Contiene mensajes de estado + + AnimatedSprite *mSprite; // Sprite con los graficos del objeto + + Uint8 mClass; // Especifica el tipo de objeto que es + bool mEnabled; // Especifica si el objeto está habilitado + circle_t mCollider; // Circulo de colisión del objeto + + // Alinea el circulo de colisión con la posición del objeto + void shiftColliders(); + public: // Constructor Item(); @@ -17,7 +37,7 @@ public: ~Item(); // Iniciador - void init(Uint8 value, float x, float y, LTexture* texture, SDL_Renderer *renderer); + void init(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer *renderer); // Centra el objeto en la posición X void allignTo(int x); @@ -32,7 +52,7 @@ public: void erase(); // Actualiza al objeto a su posicion, animación y controla los contadores - void update(); + int update(); // Actualiza el contador void updateTimeToLive(); @@ -64,40 +84,8 @@ public: // Obtiene el circulo de colisión circle_t &getCollider(); - // Temporizador con el tiempo que el objeto está presente + // Temporizador con el tiempo que el objeto está presente Uint16 mTimeToLive; - -private: - // Posición X,Y del objeto - float mPosX; - float mPosY; - - // Alto y ancho del objeto - Uint8 mWidth; - Uint8 mHeight; - - // Variables para controlar la velocidad del objeto - float mVelX; - float mVelY; - - // Aceleración - float mAccelX; - float mAccelY; - - // Sprite con los graficos del objeto - AnimatedSprite *mSprite; - - // Especifica el tipo de objeto que es - Uint8 mClass; - - // Especifica si está habilitado el objeto - bool mEnabled; - - // Circulo de colisión del objeto - circle_t mCollider; - - // Alinea el circulo de colisión con la posición del objeto - void shiftColliders(); }; #endif diff --git a/source/lang.h b/source/lang.h index 621da69..f0754d1 100644 --- a/source/lang.h +++ b/source/lang.h @@ -268,7 +268,7 @@ const std::string gTextStrings[MAX_TEXT_STRINGS][3] = // 50 - TEXTO DE COMPLETAR EL JUEGO {"FELICIDADES!!", "FELICITATS!!", - "CONGRATULATIONS!!"}, + "NICE!!"}, };