From e61daeb92e58f156ad24181a2277c91b5f49df9c Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 28 Dec 2024 21:23:04 +0100 Subject: [PATCH] =?UTF-8?q?Modificats=20els=20grafics=20del=20enemic=20nou?= =?UTF-8?q?=20Afegits=20nous=20audios=20i=20veus=20Completat=20el=20compor?= =?UTF-8?q?tament=20del=20enemic=20nou=20Ampliat=20el=20numero=20m=C3=A1xi?= =?UTF-8?q?m=20de=20sons=20simultanis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- data/gfx/tabe/tabe.png | Bin 2113 -> 1871 bytes data/sound/tabe.wav | Bin 0 -> 43100 bytes data/sound/voice_get_ready.wav | Bin 0 -> 32920 bytes source/director.cpp | 4 +- source/game.cpp | 30 ++++----- source/jail_audio.cpp | 2 +- source/resource.cpp | 10 +-- source/tabe.cpp | 120 ++++++++++++++++++++++++++++----- source/tabe.h | 22 ++++-- 10 files changed, 149 insertions(+), 42 deletions(-) create mode 100644 data/sound/tabe.wav create mode 100644 data/sound/voice_get_ready.wav diff --git a/.gitignore b/.gitignore index e499348..6da53d7 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ thumbs.db *score.bin coffee_crisis* debug.txt -cppcheck-result* \ No newline at end of file +cppcheck-result* +desktop.ini diff --git a/data/gfx/tabe/tabe.png b/data/gfx/tabe/tabe.png index f85830006088543ded0741d696fccf0643f5fea2..d168a88b7f2e8b5e6f07f07146270ce76334e93c 100644 GIT binary patch delta 1843 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�@^G6ME-7<~Qc1c1+9SK5#Gb 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 literal 0 HcmV?d00001 diff --git a/source/director.cpp b/source/director.cpp index 0028988..e092c67 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -54,7 +54,7 @@ Director::Director(int argc, const char *argv[]) section::name = section::Name::GAME; section::options = section::Options::GAME_PLAY_1P; #elif DEBUG - section::name = section::Name::LOGO; + section::name = section::Name::GAME; #else // NORMAL GAME section::name = section::Name::LOGO; section::attract_mode = section::AttractMode::TITLE_TO_DEMO; @@ -409,6 +409,8 @@ void Director::setFileList() Asset::get()->add(prefix + "/data/sound/voice_coffee.wav", AssetType::SOUND); Asset::get()->add(prefix + "/data/sound/voice_power_up.wav", AssetType::SOUND); Asset::get()->add(prefix + "/data/sound/voice_no.wav", AssetType::SOUND); + Asset::get()->add(prefix + "/data/sound/voice_get_ready.wav", AssetType::SOUND); + Asset::get()->add(prefix + "/data/sound/tabe.wav", AssetType::SOUND); // Shaders Asset::get()->add(prefix + "/data/shaders/crtpi_256.glsl", AssetType::DATA); diff --git a/source/game.cpp b/source/game.cpp index d63101b..dc76e09 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -274,7 +274,7 @@ void Game::updateStage() std::vector paths = {paths_.at(2), paths_.at(3)}; if (Stage::number == 9) { - createMessage(paths, Resource::get()->getTexture("last_stage")); + createMessage(paths, Resource::get()->getTexture("game_text_last_stage")); } else { @@ -301,8 +301,8 @@ void Game::updateFadeInState() { balloon_manager_->createTwoBigBalloons(); evaluateAndSetMenace(); - createMessage({paths_.at(0), paths_.at(1)}, Resource::get()->getTexture("get_ready")); - JA_PlaySound(Resource::get()->getSound("stage_change.wav")); + createMessage({paths_.at(0), paths_.at(1)}, Resource::get()->getTexture("game_text_get_ready")); + JA_PlaySound(Resource::get()->getSound("voice_get_ready.wav")); } } } @@ -317,7 +317,7 @@ void Game::updateGameOverState() { if (game_over_counter_ == GAME_OVER_COUNTER_) { - createMessage({paths_.at(2), paths_.at(3)}, Resource::get()->getTexture("game_over")); + createMessage({paths_.at(2), paths_.at(3)}, Resource::get()->getTexture("game_text_game_over")); JA_FadeOutMusic(1000); balloon_manager_->setSounds(true); } @@ -365,8 +365,8 @@ void Game::updateCompletedState() // Muestra el mensaje de felicitación y da los puntos a los jugadores if (game_completed_counter_ == 200) { - createMessage({paths_.at(4), paths_.at(5)}, Resource::get()->getTexture("congratulations")); - createMessage({paths_.at(6), paths_.at(7)}, Resource::get()->getTexture("1000000_points")); + createMessage({paths_.at(4), paths_.at(5)}, Resource::get()->getTexture("game_text_congratulations")); + createMessage({paths_.at(6), paths_.at(7)}, Resource::get()->getTexture("game_text_1000000_points")); for (auto &player : players_) if (player->isPlaying()) @@ -943,13 +943,14 @@ void Game::fillCanvas() background_->render(); renderItems(); renderSmartSprites(); - balloon_manager_->render(); tabe_->render(); + balloon_manager_->render(); renderBullets(); renderPathSprites(); renderPlayers(); - // dbg_print(0, 40, std::to_string(menace_current_).c_str(), 255, 0, 0); - // dbg_print(0, 50, std::to_string(menace_threshold_).c_str(), 255, 0, 0); + + auto sprite = std::make_unique(Resource::get()->getTexture("game_text_game_over")); + sprite->render(); // Deja el renderizador apuntando donde estaba SDL_SetRenderTarget(renderer_, temp); @@ -1023,7 +1024,7 @@ void Game::initPaths() { // Recorrido para el texto de "Get Ready!" (0,1) { - const auto &texture = Resource::get()->getTexture("get_ready"); + const auto &texture = Resource::get()->getTexture("game_text_get_ready"); const auto w = texture->getWidth(); const int x0 = -w; const int x1 = param.game.play_area.center_x - w / 2; @@ -1035,7 +1036,7 @@ void Game::initPaths() // Recorrido para el texto de "Last Stage!" o de "X stages left" o "Game Over" (2,3) { - const auto &texture = Resource::get()->getTexture("last_stage"); + const auto &texture = Resource::get()->getTexture("game_text_last_stage"); const auto h = texture->getHeight(); const int y0 = param.game.play_area.rect.h - h; const int y1 = param.game.play_area.center_y - h / 2; @@ -1047,7 +1048,7 @@ void Game::initPaths() // Recorrido para el texto de "Congratulations!!" (3,4) { - const auto &texture = Resource::get()->getTexture("congratulations"); + const auto &texture = Resource::get()->getTexture("game_text_congratulations"); const auto w = texture->getWidth(); const auto h = texture->getHeight(); const int x0 = -w; @@ -1060,7 +1061,7 @@ void Game::initPaths() // Recorrido para el texto de "1.000.000 points!" (5,6) { - const auto &texture = Resource::get()->getTexture("1000000_points"); + const auto &texture = Resource::get()->getTexture("game_text_1000000_points"); const auto w = texture->getWidth(); const auto h = texture->getHeight(); const int x0 = param.game.play_area.rect.w; @@ -1198,8 +1199,7 @@ void Game::checkEvents() } case SDLK_6: // Crea un mensaje { - createMessage({paths_.at(4), paths_.at(5)}, Resource::get()->getTexture("congratulations")); - createMessage({paths_.at(6), paths_.at(7)}, Resource::get()->getTexture("1000000_points")); + createMessage({paths_.at(2), paths_.at(3)}, Resource::get()->getTexture("game_text_congratulations")); break; } case SDLK_7: // Flash diff --git a/source/jail_audio.cpp b/source/jail_audio.cpp index be7031b..76592df 100644 --- a/source/jail_audio.cpp +++ b/source/jail_audio.cpp @@ -4,7 +4,7 @@ #include #include -#define JA_MAX_SIMULTANEOUS_CHANNELS 5 +#define JA_MAX_SIMULTANEOUS_CHANNELS 20 struct JA_Sound_t { Uint32 length {0}; diff --git a/source/resource.cpp b/source/resource.cpp index b60a051..f63aa61 100644 --- a/source/resource.cpp +++ b/source/resource.cpp @@ -290,7 +290,7 @@ void Resource::createTextures() NameAndText("game_text_powerup", lang::getText(117)), NameAndText("game_text_one_hit", lang::getText(118)), NameAndText("game_text_stop", lang::getText(119)), - NameAndText("1000000_points", lang::getText(76))}; + NameAndText("game_text_1000000_points", lang::getText(76))}; auto text = getText("04b_25"); for (const auto &s : strings) @@ -301,10 +301,10 @@ void Resource::createTextures() // Tamaño doble std::vector strings2X = { - NameAndText("get_ready", lang::getText(75)), - NameAndText("last_stage", lang::getText(79)), - NameAndText("congratulations", lang::getText(50)), - NameAndText("game_over", "Game Over")}; + NameAndText("game_text_get_ready", lang::getText(75)), + NameAndText("game_text_last_stage", lang::getText(79)), + NameAndText("game_text_congratulations", lang::getText(50)), + NameAndText("game_text_game_over", "Game Over")}; auto text2 = getText("04b_25_2x"); for (const auto &s : strings2X) diff --git a/source/tabe.cpp b/source/tabe.cpp index a870125..6f59316 100644 --- a/source/tabe.cpp +++ b/source/tabe.cpp @@ -1,13 +1,12 @@ #include "tabe.h" #include "resource.h" #include "param.h" +#include "jail_audio.h" #include // Constructor Tabe::Tabe() - : sprite_(std::make_unique(Resource::get()->getTexture("tabe.png"), Resource::get()->getAnimation("tabe.ani"))) -{ -} + : sprite_(std::make_unique(Resource::get()->getTexture("tabe.png"), Resource::get()->getAnimation("tabe.ani"))) {} // Actualiza la lógica void Tabe::update() @@ -31,25 +30,116 @@ void Tabe::render() // Mueve el objeto void Tabe::move() { + const int x = static_cast(x_); + speed_ += accel_; x_ += speed_; - const float min_x = param.game.game_area.rect.x; - const float max_x = param.game.game_area.rect.x + param.game.game_area.rect.w - WIDTH_; - if (x_ < min_x || x_ > max_x) + fly_distance_ -= std::abs(x - static_cast(x_)); + + // Comprueba si sale por los bordes + const float min_x = param.game.game_area.rect.x - WIDTH_; + const float max_x = param.game.game_area.rect.x + param.game.game_area.rect.w; + switch (destiny_) { - x_ = std::clamp(x_, min_x, max_x); - speed_ = -speed_; - sprite_->setFlip(speed_ > 0.0f ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE); + case TabeDirection::TO_THE_LEFT: + { + if (x_ < min_x) + { + enabled_ = false; + } + if (x_ > param.game.game_area.rect.x + param.game.game_area.rect.w - WIDTH_ && direction_ == TabeDirection::TO_THE_RIGHT) + { + setRandomFlyPath(TabeDirection::TO_THE_LEFT, 80); + x_ = param.game.game_area.rect.x + param.game.game_area.rect.w - WIDTH_; + } + break; } + + case TabeDirection::TO_THE_RIGHT: + { + if (x_ > max_x) + { + enabled_ = false; + } + if (x_ < param.game.game_area.rect.x && direction_ == TabeDirection::TO_THE_LEFT) + { + setRandomFlyPath(TabeDirection::TO_THE_RIGHT, 80); + x_ = param.game.game_area.rect.x; + } + break; + } + default: + break; + } + + if (fly_distance_ <= 0) + { + if (waiting_counter_ > 0) + { + accel_ = speed_ = 0.0f; + --waiting_counter_; + } + else + { + constexpr int CHOICES = 4; + const TabeDirection left[CHOICES] = {TabeDirection::TO_THE_LEFT, TabeDirection::TO_THE_LEFT, TabeDirection::TO_THE_LEFT, TabeDirection::TO_THE_RIGHT}; + const TabeDirection right[CHOICES] = {TabeDirection::TO_THE_LEFT, TabeDirection::TO_THE_RIGHT, TabeDirection::TO_THE_RIGHT, TabeDirection::TO_THE_RIGHT}; + const TabeDirection direction = destiny_ == TabeDirection::TO_THE_LEFT ? left[rand() % CHOICES] : right[rand() % CHOICES]; + setRandomFlyPath(direction, 20 + rand() % 40); + } + } + shiftSprite(); } // Habilita el objeto void Tabe::enable() { - enabled_ = true; - speed_ = 5.0f; - x_ = 50.0f; - y_ = 20.0f; - sprite_->setFlip(speed_ > 0.0f ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE); - shiftSprite(); + if (!enabled_) + { + enabled_ = true; + y_ = 20.0f; + + // Establece una dirección aleatoria + destiny_ = direction_ = rand() % 2 == 0 ? TabeDirection::TO_THE_LEFT : TabeDirection::TO_THE_RIGHT; + + // Establece la posición inicial + x_ = (direction_ == TabeDirection::TO_THE_LEFT) ? param.game.game_area.rect.x + param.game.game_area.rect.w : param.game.game_area.rect.x - WIDTH_; + + // Crea una ruta de vuelo + setRandomFlyPath(direction_, 60); + shiftSprite(); + } +} + +// Establece un vuelo aleatorio +void Tabe::setRandomFlyPath(TabeDirection direction, int lenght) +{ + direction_ = direction; + fly_distance_ = lenght; + waiting_counter_ = 5 + rand() % 15; + JA_PlaySound(Resource::get()->getSound("tabe.wav")); + + constexpr float SPEED = 2.0f; + + switch (direction) + { + case TabeDirection::TO_THE_LEFT: + { + speed_ = -1.0f * SPEED; + accel_ = -1.0f * (1 + rand() % 10) / 30.0f; + sprite_->setFlip(SDL_FLIP_NONE); + break; + } + + case TabeDirection::TO_THE_RIGHT: + { + speed_ = SPEED; + accel_ = (1 + rand() % 10) / 30.0f; + sprite_->setFlip(SDL_FLIP_HORIZONTAL); + break; + } + + default: + break; + } } \ No newline at end of file diff --git a/source/tabe.h b/source/tabe.h index 56d3ffb..0ece92a 100644 --- a/source/tabe.h +++ b/source/tabe.h @@ -3,6 +3,12 @@ #include "animated_sprite.h" #include +enum class TabeDirection : int +{ + TO_THE_LEFT = 0, + TO_THE_RIGHT = 1, +}; + // Clase Tabe class Tabe { @@ -15,10 +21,15 @@ private: std::unique_ptr sprite_; // Sprite con los graficos y animaciones // Variables - float x_; // Posición del objeto - float y_; // Posición del objeto - float speed_; // Velocidad de movimiento del objeto - bool enabled_ = false; // Indica si el objeto está activo + float x_ = 0; // Posición del objeto + float y_ = 0; // Posición del objeto + float speed_ = 0.0f; // Velocidad de movimiento del objeto + float accel_ = 0.0f; // Aceleración del objeto + int fly_distance_ = 0; // Distancia de vuelo + int waiting_counter_ = 0; // Tiempo que pasa quieto el objeto + bool enabled_ = false; // Indica si el objeto está activo + TabeDirection direction_; // Dirección del objeto + TabeDirection destiny_; // Destino del objeto // Mueve el objeto void move(); @@ -26,6 +37,9 @@ private: // Actualiza la posición del sprite void shiftSprite() { sprite_->setPos(x_, y_); } + // Establece un vuelo aleatorio + void setRandomFlyPath(TabeDirection direction, int lenght); + public: // Constructor Tabe();