treball en curs: correccions de tidy

This commit is contained in:
2026-05-16 17:45:32 +02:00
parent ee2dd0bc2c
commit 9f6d38cf48
22 changed files with 813 additions and 1074 deletions
+157 -331
View File
@@ -21,36 +21,47 @@ class Texture;
struct JA_Music_t;
struct JA_Sound_t;
// Cantidad de elementos a escribir en los ficheros de datos
constexpr int TOTAL_SCORE_DATA = 3;
constexpr int TOTAL_DEMO_DATA = 2000;
// Contadores
constexpr int STAGE_COUNTER = 200;
constexpr int SHAKE_COUNTER = 10;
constexpr int HELP_COUNTER = 1000;
constexpr int GAME_COMPLETED_START_FADE = 500;
constexpr int GAME_COMPLETED_END = 700;
// Formaciones enemigas
constexpr int NUMBER_OF_ENEMY_FORMATIONS = 100;
constexpr int MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION = 50;
// Porcentaje de aparición de los objetos
constexpr int ITEM_POINTS_1_DISK_ODDS = 10;
constexpr int ITEM_POINTS_2_GAVINA_ODDS = 6;
constexpr int ITEM_POINTS_3_PACMAR_ODDS = 3;
constexpr int ITEM_CLOCK_ODDS = 5;
constexpr int ITEM_COFFEE_ODDS = 5;
constexpr int ITEM_POWER_BALL_ODDS = 0;
constexpr int ITEM_COFFEE_MACHINE_ODDS = 4;
// Valores para las variables asociadas a los objetos
constexpr int TIME_STOPPED_COUNTER = 300;
// Clase Game
class Game {
public:
Game(int num_players, int current_stage, SDL_Renderer *renderer, bool demo, Section *section); // Constructor
~Game(); // Destructor
Game(const Game &) = delete;
auto operator=(const Game &) -> Game & = delete;
void run(); // Bucle para el juego
void iterate(); // Ejecuta un frame del juego
[[nodiscard]] auto hasFinished() const -> bool; // Indica si el juego ha terminado
void handleEvent(const SDL_Event *event); // Procesa un evento
private:
// Cantidad de elementos a escribir en los ficheros de datos
static constexpr int TOTAL_SCORE_DATA = 3;
static constexpr int TOTAL_DEMO_DATA = 2000;
// Contadores
static constexpr int STAGE_COUNTER = 200;
static constexpr int SHAKE_COUNTER = 10;
static constexpr int HELP_COUNTER = 1000;
static constexpr int GAME_COMPLETED_START_FADE = 500;
static constexpr int GAME_COMPLETED_END = 700;
// Formaciones enemigas
static constexpr int NUMBER_OF_ENEMY_FORMATIONS = 100;
static constexpr int MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION = 50;
// Porcentaje de aparición de los objetos
static constexpr int ITEM_POINTS_1_DISK_ODDS = 10;
static constexpr int ITEM_POINTS_2_GAVINA_ODDS = 6;
static constexpr int ITEM_POINTS_3_PACMAR_ODDS = 3;
static constexpr int ITEM_CLOCK_ODDS = 5;
static constexpr int ITEM_COFFEE_ODDS = 5;
static constexpr int ITEM_COFFEE_MACHINE_ODDS = 4;
// Valores para las variables asociadas a los objetos
static constexpr int TIME_STOPPED_COUNTER = 300;
struct EnemyInit {
int x; // Posición en el eje X donde crear al enemigo
int y; // Posición en el eje Y donde crear al enemigo
@@ -128,6 +139,125 @@ class Game {
DemoKeys data_file[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo
};
void update(); // Actualiza el juego
void render(); // Dibuja el juego
void init(); // Inicializa las variables necesarias para la sección 'Game'
void loadMedia(); // Carga los recursos necesarios para la sección 'Game'
auto loadScoreFile() -> bool; // Carga el fichero de puntos
auto loadDemoFile() -> bool; // Carga el fichero de datos para la demo
auto saveScoreFile() -> bool; // Guarda el fichero de puntos
auto saveDemoFile() -> bool; // Guarda el fichero de datos para la demo
void initEnemyFormations(); // Inicializa las formaciones enemigas
void initEnemyFormationsZero(); // Helper de initEnemyFormations
void initEnemyFormationsLinear(); // Helper de initEnemyFormations
void initEnemyFormationsSymmetric(); // Helper de initEnemyFormations
void initEnemyFormationsHexagonsAndTest(); // Helper de initEnemyFormations
void initEnemyPools(); // Inicializa los conjuntos de formaciones
void initGameStages(); // Inicializa las fases del juego
void deployEnemyFormation(); // Crea una formación de enemigos
void increaseStageCurrentPower(Uint8 power); // Aumenta el poder de la fase
void setHiScore(Uint32 score); // Establece el valor de la variable
void updateHiScore(); // Actualiza el valor de HiScore en caso necesario
static auto updateScoreText(Uint32 num) -> std::string; // Transforma un valor numérico en una cadena de 6 cifras
void renderScoreBoard(); // Pinta el marcador en pantalla usando un objeto texto
void updatePlayers(); // Actualiza las variables del jugador
void renderPlayers(); // Dibuja a los jugadores
void updateStage(); // Actualiza las variables de la fase
void updateDeath(); // Actualiza el estado de muerte
void renderDeathFade(int counter); // Renderiza el fade final cuando se acaba la partida
void updateBalloons(); // Actualiza los globos
void renderBalloons(); // Pinta en pantalla todos los globos activos
auto createBalloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer) -> Uint8; // Crea un globo nuevo en el vector de globos
void createPowerBall(); // Crea una PowerBall
void setBalloonSpeed(float speed); // Establece la velocidad de los globos
void incBalloonSpeed(); // Incrementa la velocidad de los globos
void updateBalloonSpeed(); // Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
void popBalloon(Balloon *balloon); // Explosiona un globo. Lo destruye y crea otros dos si es el caso
void destroyBalloon(Balloon *balloon); // Explosiona un globo. Lo destruye
void destroyAllBalloons(); // Destruye todos los globos
void stopAllBalloons(Uint16 time); // Detiene todos los globos
void startAllBalloons(); // Pone en marcha todos los globos
void freeBalloons(); // Vacia el vector de globos
auto checkPlayerBalloonCollision(Player *player) -> bool; // Comprueba la colisión entre el jugador y los globos activos
void checkPlayerItemCollision(Player *player); // Comprueba la colisión entre el jugador y los items
void checkBulletBalloonCollision(); // Comprueba la colisión entre las balas y los globos
void resolveBulletBalloonHit(Bullet *bullet, Balloon *balloon); // Resuelve un impacto bala-globo (helper de checkBulletBalloonCollision)
void moveBullets(); // Mueve las balas activas
void renderBullets(); // Pinta las balas activas
void createBullet(int x, int y, Bullet::Kind kind, bool powered_up, int owner); // Crea un objeto bala
void freeBullets(); // Vacia el vector de balas
void updateItems(); // Actualiza los items
void renderItems(); // Pinta los items activos
auto dropItem() -> Item::Id; // Devuelve un item en función del azar
void createItem(Item::Id kind, float x, float y); // Crea un objeto item
void freeItems(); // Vacia el vector de items
void createItemScoreSprite(int x, int y, const SmartSprite *sprite); // Crea un objeto SmartSprite
void freeSmartSprites(); // Vacia el vector de smartsprites
void renderFlashEffect(); // Dibuja el efecto de flash
void updateShakeEffect(); // Actualiza el efecto de agitar la pantalla
void throwCoffee(int x, int y); // Crea un SmartSprite para arrojar el item café al recibir un impacto
void updateSmartSprites(); // Actualiza los SmartSprites
void renderSmartSprites(); // Pinta los SmartSprites activos
void killPlayer(Player *player); // Acciones a realizar cuando el jugador muere
void evaluateAndSetMenace(); // Calcula y establece el valor de amenaza en funcion de los globos activos
[[nodiscard]] auto getMenace() const -> Uint8; // Obtiene el valor de la variable
void setTimeStopped(bool value); // Establece el valor de la variable
[[nodiscard]] auto isTimeStopped() const -> bool; // Obtiene el valor de la variable
void setTimeStoppedCounter(Uint16 value); // Establece el valor de la variable
void incTimeStoppedCounter(Uint16 value); // Incrementa el valor de la variable
void updateEnemyDeployCounter(); // Actualiza la variable EnemyDeployCounter
void updateTimeStoppedCounter(); // Actualiza y comprueba el valor de la variable
void updateMenace(); // Gestiona el nivel de amenaza
void updateBackground(); // Actualiza el fondo
void renderBackground(); // Dibuja el fondo
void checkGameInput(); // Gestiona la entrada durante el juego
void processDemoInput(); // Helper de checkGameInput
void processLiveInput(); // Helper de checkGameInput
void processPlayerLiveInput(Player *player, int i); // Helper de checkGameInput
void renderMessages(); // Pinta diferentes mensajes en la pantalla
void enableTimeStopItem(); // Habilita el efecto del item de detener el tiempo
void disableTimeStopItem(); // Deshabilita el efecto del item de detener el tiempo
void shakeScreen(); // Inicia el efecto de agitación intensa de la pantalla
void updateDeathShake(); // Actualiza el efecto de agitación intensa
[[nodiscard]] auto isDeathShaking() const -> bool; // Indica si el efecto de agitación intensa está activo
void updateDeathSequence(); // Actualiza la secuencia de muerte del jugador
void updatePausedGame(); // Actualiza las variables del menu de pausa del juego
void updateLeavingPauseMenu(); // Helper de updatePausedGame
void updatePauseMenuUI(); // Helper de updatePausedGame
void renderPausedGame(); // Dibuja el menu de pausa del juego
void enterPausedGame(); // Inicializa el estado de pausa del juego
void updateGameOverScreen(); // Actualiza los elementos de la pantalla de game over
void renderGameOverScreen(); // Dibuja los elementos de la pantalla de game over
void enterGameOverScreen(); // Inicializa el estado de game over
auto canPowerBallBeCreated() -> bool; // Indica si se puede crear una powerball
auto calculateScreenPower() -> int; // Calcula el poder actual de los globos en pantalla
void initPaths(); // Inicializa las variables que contienen puntos de ruta para mover objetos
void updateGameCompleted(); // Actualiza el tramo final de juego, una vez completado
void updateHelper(); // Actualiza las variables de ayuda
auto allPlayersAreDead() -> bool; // Comprueba si todos los jugadores han muerto
void deleteAllVectorObjects(); // Elimina todos los objetos contenidos en vectores
void setHiScore(); // Establece la máxima puntuación desde fichero o desde las puntuaciones online
// Objetos y punteros
SDL_Renderer *renderer_; // El renderizador de la ventana
Section *section_; // Seccion actual dentro del juego
@@ -255,308 +385,4 @@ class Game {
#ifdef PAUSE
bool pause;
#endif
// Actualiza el juego
void update();
// Dibuja el juego
void render();
// Inicializa las variables necesarias para la sección 'Game'
void init();
// Carga los recursos necesarios para la sección 'Game'
void loadMedia();
// Carga el fichero de puntos
auto loadScoreFile() -> bool;
// Carga el fichero de datos para la demo
auto loadDemoFile() -> bool;
// Guarda el fichero de puntos
auto saveScoreFile() -> bool;
// Guarda el fichero de datos para la demo
auto saveDemoFile() -> bool;
// Inicializa las formaciones enemigas
void initEnemyFormations();
// Helpers de initEnemyFormations
void initEnemyFormationsZero();
void initEnemyFormationsLinear();
void initEnemyFormationsSymmetric();
void initEnemyFormationsHexagonsAndTest();
// Inicializa los conjuntos de formaciones
void initEnemyPools();
// Inicializa las fases del juego
void initGameStages();
// Crea una formación de enemigos
void deployEnemyFormation();
// Aumenta el poder de la fase
void increaseStageCurrentPower(Uint8 power);
// Establece el valor de la variable
void setHiScore(Uint32 score);
// Actualiza el valor de HiScore en caso necesario
void updateHiScore();
// Transforma un valor numérico en una cadena de 6 cifras
static auto updateScoreText(Uint32 num) -> std::string;
// Pinta el marcador en pantalla usando un objeto texto
void renderScoreBoard();
// Actualiza las variables del jugador
void updatePlayers();
// Dibuja a los jugadores
void renderPlayers();
// Actualiza las variables de la fase
void updateStage();
// Actualiza el estado de muerte
void updateDeath();
// Renderiza el fade final cuando se acaba la partida
void renderDeathFade(int counter);
// Actualiza los globos
void updateBalloons();
// Pinta en pantalla todos los globos activos
void renderBalloons();
// Crea un globo nuevo en el vector de globos
auto createBalloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer) -> Uint8;
// Crea una PowerBall
void createPowerBall();
// Establece la velocidad de los globos
void setBalloonSpeed(float speed);
// Incrementa la velocidad de los globos
void incBalloonSpeed();
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
void updateBalloonSpeed();
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
void popBalloon(Balloon *balloon);
// Explosiona un globo. Lo destruye
void destroyBalloon(Balloon *balloon);
// Destruye todos los globos
void destroyAllBalloons();
// Detiene todos los globos
void stopAllBalloons(Uint16 time);
// Pone en marcha todos los globos
void startAllBalloons();
// Vacia el vector de globos
void freeBalloons();
// Comprueba la colisión entre el jugador y los globos activos
auto checkPlayerBalloonCollision(Player *player) -> bool;
// Comprueba la colisión entre el jugador y los items
void checkPlayerItemCollision(Player *player);
// Comprueba la colisión entre las balas y los globos
void checkBulletBalloonCollision();
// Resuelve un impacto bala-globo (helper de checkBulletBalloonCollision)
void resolveBulletBalloonHit(Bullet *bullet, Balloon *balloon);
// Mueve las balas activas
void moveBullets();
// Pinta las balas activas
void renderBullets();
// Crea un objeto bala
void createBullet(int x, int y, Bullet::Kind kind, bool powered_up, int owner);
// Vacia el vector de balas
void freeBullets();
// Actualiza los items
void updateItems();
// Pinta los items activos
void renderItems();
// Devuelve un item en función del azar
auto dropItem() -> Item::Id;
// Crea un objeto item
void createItem(Item::Id kind, float x, float y);
// Vacia el vector de items
void freeItems();
// Crea un objeto SmartSprite
void createItemScoreSprite(int x, int y, const SmartSprite *sprite);
// Vacia el vector de smartsprites
void freeSmartSprites();
// Dibuja el efecto de flash
void renderFlashEffect();
// Actualiza el efecto de agitar la pantalla
void updateShakeEffect();
// Crea un SmartSprite para arrojar el item café al recibir un impacto
void throwCoffee(int x, int y);
// Actualiza los SmartSprites
void updateSmartSprites();
// Pinta los SmartSprites activos
void renderSmartSprites();
// Acciones a realizar cuando el jugador muere
void killPlayer(Player *player);
// Calcula y establece el valor de amenaza en funcion de los globos activos
void evaluateAndSetMenace();
// Obtiene el valor de la variable
[[nodiscard]] auto getMenace() const -> Uint8;
// Establece el valor de la variable
void setTimeStopped(bool value);
// Obtiene el valor de la variable
[[nodiscard]] auto isTimeStopped() const -> bool;
// Establece el valor de la variable
void setTimeStoppedCounter(Uint16 value);
// Incrementa el valor de la variable
void incTimeStoppedCounter(Uint16 value);
// Actualiza la variable EnemyDeployCounter
void updateEnemyDeployCounter();
// Actualiza y comprueba el valor de la variable
void updateTimeStoppedCounter();
// Gestiona el nivel de amenaza
void updateMenace();
// Actualiza el fondo
void updateBackground();
// Dibuja el fondo
void renderBackground();
// Gestiona la entrada durante el juego
void checkGameInput();
// Helpers de checkGameInput
void processDemoInput();
void processLiveInput();
void processPlayerLiveInput(Player *player, int i);
// Pinta diferentes mensajes en la pantalla
void renderMessages();
// Habilita el efecto del item de detener el tiempo
void enableTimeStopItem();
// Deshabilita el efecto del item de detener el tiempo
void disableTimeStopItem();
// Inicia el efecto de agitación intensa de la pantalla
void shakeScreen();
// Actualiza el efecto de agitación intensa
void updateDeathShake();
// Indica si el efecto de agitación intensa está activo
[[nodiscard]] auto isDeathShaking() const -> bool;
// Actualiza la secuencia de muerte del jugador
void updateDeathSequence();
// Actualiza las variables del menu de pausa del juego
void updatePausedGame();
// Helpers de updatePausedGame
void updateLeavingPauseMenu();
void updatePauseMenuUI();
// Dibuja el menu de pausa del juego
void renderPausedGame();
// Inicializa el estado de pausa del juego
void enterPausedGame();
// Actualiza los elementos de la pantalla de game over
void updateGameOverScreen();
// Dibuja los elementos de la pantalla de game over
void renderGameOverScreen();
// Inicializa el estado de game over
void enterGameOverScreen();
// Indica si se puede crear una powerball
auto canPowerBallBeCreated() -> bool;
// Calcula el poder actual de los globos en pantalla
auto calculateScreenPower() -> int;
// Inicializa las variables que contienen puntos de ruta para mover objetos
void initPaths();
// Actualiza el tramo final de juego, una vez completado
void updateGameCompleted();
// Actualiza las variables de ayuda
void updateHelper();
// Comprueba si todos los jugadores han muerto
auto allPlayersAreDead() -> bool;
// Elimina todos los objetos contenidos en vectores
void deleteAllVectorObjects();
// Establece la máxima puntuación desde fichero o desde las puntuaciones online
void setHiScore();
public:
// Constructor
Game(int num_players, int current_stage, SDL_Renderer *renderer, bool demo, Section *section);
// Destructor
~Game();
Game(const Game &) = delete;
auto operator=(const Game &) -> Game & = delete;
// Bucle para el juego
void run();
// Ejecuta un frame del juego
void iterate();
// Indica si el juego ha terminado
[[nodiscard]] auto hasFinished() const -> bool;
// Procesa un evento
void handleEvent(const SDL_Event *event);
};