treball en curs: correccions de tidy

This commit is contained in:
2026-05-16 14:53:54 +02:00
parent be18f51735
commit b1392d0c00
6 changed files with 2101 additions and 2128 deletions
+34 -34
View File
@@ -18,9 +18,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
switch (kind) { switch (kind) {
case BALLOON_1: case BALLOON_1:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_1; width_ = WIDTH_1;
height_ = BALLOON_WIDTH_1; height_ = WIDTH_1;
size_ = BALLOON_SIZE_1; size_ = SIZE_1;
power_ = 1; power_ = 1;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -31,7 +31,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = 2.6F; default_vel_y_ = 2.6F;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_1; score_ = SCORE_1;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 1; menace_ = 1;
@@ -40,9 +40,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case BALLOON_2: case BALLOON_2:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_2; width_ = WIDTH_2;
height_ = BALLOON_WIDTH_2; height_ = WIDTH_2;
size_ = BALLOON_SIZE_2; size_ = SIZE_2;
power_ = 3; power_ = 3;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -53,7 +53,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = 3.5F; default_vel_y_ = 3.5F;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_2; score_ = SCORE_2;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 2; menace_ = 2;
@@ -62,9 +62,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case BALLOON_3: case BALLOON_3:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_3; width_ = WIDTH_3;
height_ = BALLOON_WIDTH_3; height_ = WIDTH_3;
size_ = BALLOON_SIZE_3; size_ = SIZE_3;
power_ = 7; power_ = 7;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -75,7 +75,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = 4.50F; default_vel_y_ = 4.50F;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_3; score_ = SCORE_3;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 4; menace_ = 4;
@@ -84,9 +84,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case BALLOON_4: case BALLOON_4:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_4; width_ = WIDTH_4;
height_ = BALLOON_WIDTH_4; height_ = WIDTH_4;
size_ = BALLOON_SIZE_4; size_ = SIZE_4;
power_ = 15; power_ = 15;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -97,7 +97,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = 4.95F; default_vel_y_ = 4.95F;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_4; score_ = SCORE_4;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 8; menace_ = 8;
@@ -106,9 +106,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case HEXAGON_1: case HEXAGON_1:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_1; width_ = WIDTH_1;
height_ = BALLOON_WIDTH_1; height_ = WIDTH_1;
size_ = BALLOON_SIZE_1; size_ = SIZE_1;
power_ = 1; power_ = 1;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -119,7 +119,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = std::fabs(velx) * 2; default_vel_y_ = std::fabs(velx) * 2;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_1; score_ = SCORE_1;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 1; menace_ = 1;
@@ -128,9 +128,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case HEXAGON_2: case HEXAGON_2:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_2; width_ = WIDTH_2;
height_ = BALLOON_WIDTH_2; height_ = WIDTH_2;
size_ = BALLOON_SIZE_2; size_ = SIZE_2;
power_ = 3; power_ = 3;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -141,7 +141,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = std::fabs(velx) * 2; default_vel_y_ = std::fabs(velx) * 2;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_2; score_ = SCORE_2;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 2; menace_ = 2;
@@ -150,9 +150,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case HEXAGON_3: case HEXAGON_3:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_3; width_ = WIDTH_3;
height_ = BALLOON_WIDTH_3; height_ = WIDTH_3;
size_ = BALLOON_SIZE_3; size_ = SIZE_3;
power_ = 7; power_ = 7;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -163,7 +163,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = std::fabs(velx) * 2; default_vel_y_ = std::fabs(velx) * 2;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_3; score_ = SCORE_3;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 4; menace_ = 4;
@@ -172,9 +172,9 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case HEXAGON_4: case HEXAGON_4:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_4; width_ = WIDTH_4;
height_ = BALLOON_WIDTH_4; height_ = WIDTH_4;
size_ = BALLOON_SIZE_4; size_ = SIZE_4;
power_ = 15; power_ = 15;
// Inicializa los valores de velocidad y gravedad // Inicializa los valores de velocidad y gravedad
@@ -185,7 +185,7 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
default_vel_y_ = std::fabs(velx) * 2; default_vel_y_ = std::fabs(velx) * 2;
// Puntos que da el globo al ser destruido // Puntos que da el globo al ser destruido
score_ = BALLOON_SCORE_4; score_ = SCORE_4;
// Amenaza que genera el globo // Amenaza que genera el globo
menace_ = 8; menace_ = 8;
@@ -194,8 +194,8 @@ Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 c
case POWER_BALL: case POWER_BALL:
// Alto y ancho del objeto // Alto y ancho del objeto
width_ = BALLOON_WIDTH_4; width_ = WIDTH_4;
height_ = BALLOON_WIDTH_4; height_ = WIDTH_4;
size_ = 4; size_ = 4;
power_ = 0; power_ = 0;
+48 -48
View File
@@ -9,57 +9,57 @@
class AnimatedSprite; class AnimatedSprite;
class Texture; class Texture;
// Tipos de globo
constexpr int BALLOON_1 = 1;
constexpr int BALLOON_2 = 2;
constexpr int BALLOON_3 = 3;
constexpr int BALLOON_4 = 4;
constexpr int HEXAGON_1 = 5;
constexpr int HEXAGON_2 = 6;
constexpr int HEXAGON_3 = 7;
constexpr int HEXAGON_4 = 8;
constexpr int POWER_BALL = 9;
// Puntos de globo
constexpr int BALLOON_SCORE_1 = 50;
constexpr int BALLOON_SCORE_2 = 100;
constexpr int BALLOON_SCORE_3 = 200;
constexpr int BALLOON_SCORE_4 = 400;
// Tamaños de globo
constexpr int BALLOON_SIZE_1 = 1;
constexpr int BALLOON_SIZE_2 = 2;
constexpr int BALLOON_SIZE_3 = 3;
constexpr int BALLOON_SIZE_4 = 4;
// Clases de globo
constexpr int BALLOON_CLASS = 0;
constexpr int HEXAGON_CLASS = 1;
// Velocidad del globo
constexpr float BALLOON_VELX_POSITIVE = 0.7F;
constexpr float BALLOON_VELX_NEGATIVE = -0.7F;
// Velocidades a las que se mueven los globos
constexpr float BALLOON_SPEED_1 = 0.60F;
constexpr float BALLOON_SPEED_2 = 0.70F;
constexpr float BALLOON_SPEED_3 = 0.80F;
constexpr float BALLOON_SPEED_4 = 0.90F;
constexpr float BALLOON_SPEED_5 = 1.00F;
// Tamaño de los globos
constexpr int BALLOON_WIDTH_1 = 8;
constexpr int BALLOON_WIDTH_2 = 13;
constexpr int BALLOON_WIDTH_3 = 21;
constexpr int BALLOON_WIDTH_4 = 37;
// PowerBall
constexpr int POWERBALL_SCREENPOWER_MINIMUM = 10;
constexpr int POWERBALL_COUNTER = 8;
// Clase Balloon // Clase Balloon
class Balloon { class Balloon {
public: public:
// Tipos de globo
static constexpr int BALLOON_1 = 1;
static constexpr int BALLOON_2 = 2;
static constexpr int BALLOON_3 = 3;
static constexpr int BALLOON_4 = 4;
static constexpr int HEXAGON_1 = 5;
static constexpr int HEXAGON_2 = 6;
static constexpr int HEXAGON_3 = 7;
static constexpr int HEXAGON_4 = 8;
static constexpr int POWER_BALL = 9;
// Puntos de globo
static constexpr int SCORE_1 = 50;
static constexpr int SCORE_2 = 100;
static constexpr int SCORE_3 = 200;
static constexpr int SCORE_4 = 400;
// Tamaños de globo
static constexpr int SIZE_1 = 1;
static constexpr int SIZE_2 = 2;
static constexpr int SIZE_3 = 3;
static constexpr int SIZE_4 = 4;
// Clases de globo
static constexpr int BALLOON_CLASS = 0;
static constexpr int HEXAGON_CLASS = 1;
// Velocidad del globo
static constexpr float VELX_POSITIVE = 0.7F;
static constexpr float VELX_NEGATIVE = -0.7F;
// Velocidades a las que se mueven los globos
static constexpr float SPEED_1 = 0.60F;
static constexpr float SPEED_2 = 0.70F;
static constexpr float SPEED_3 = 0.80F;
static constexpr float SPEED_4 = 0.90F;
static constexpr float SPEED_5 = 1.00F;
// Tamaño de los globos
static constexpr int WIDTH_1 = 8;
static constexpr int WIDTH_2 = 13;
static constexpr int WIDTH_3 = 21;
static constexpr int WIDTH_4 = 37;
// PowerBall
static constexpr int POWERBALL_SCREENPOWER_MINIMUM = 10;
static constexpr int POWERBALL_COUNTER = 8;
Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector<std::string> *animation, SDL_Renderer *renderer); // Constructor Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, Texture *texture, std::vector<std::string> *animation, SDL_Renderer *renderer); // Constructor
~Balloon(); // Destructor ~Balloon(); // Destructor
+1223 -1223
View File
File diff suppressed because it is too large Load Diff
+139 -137
View File
@@ -54,14 +54,14 @@ class Game {
struct EnemyInit { struct EnemyInit {
int x; // Posición en el eje X donde crear al enemigo int x; // Posición en el eje X donde crear al enemigo
int y; // Posición en el eje Y donde crear al enemigo int y; // Posición en el eje Y donde crear al enemigo
float velX; // Velocidad inicial en el eje X float vel_x; // Velocidad inicial en el eje X
Uint8 kind; // Tipo de enemigo Uint8 kind; // Tipo de enemigo
Uint16 creationCounter; // Temporizador para la creación del enemigo Uint16 creation_counter; // Temporizador para la creación del enemigo
}; };
struct EnemyFormation // Contiene la información de una formación enemiga struct EnemyFormation // Contiene la información de una formación enemiga
{ {
Uint8 numberOfEnemies; // Cantidad de enemigos que forman la formación Uint8 number_of_enemies; // Cantidad de enemigos que forman la formación
EnemyInit init[MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION]; // Vector con todas las inicializaciones de los enemigos de la formación EnemyInit init[MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION]; // Vector con todas las inicializaciones de los enemigos de la formación
}; };
@@ -71,51 +71,53 @@ class Game {
struct Stage // Contiene todas las variables relacionadas con una fase struct Stage // Contiene todas las variables relacionadas con una fase
{ {
EnemyPool *enemyPool; // El conjunto de formaciones enemigas de la fase EnemyPool *enemy_pool; // El conjunto de formaciones enemigas de la fase
Uint16 currentPower; // Cantidad actual de poder Uint16 current_power; // Cantidad actual de poder
Uint16 powerToComplete; // Cantidad de poder que se necesita para completar la fase Uint16 power_to_complete; // Cantidad de poder que se necesita para completar la fase
Uint8 maxMenace; // Umbral máximo de amenaza de la fase Uint8 max_menace; // Umbral máximo de amenaza de la fase
Uint8 minMenace; // Umbral mínimo de amenaza de la fase Uint8 min_menace; // Umbral mínimo de amenaza de la fase
Uint8 number; // Numero de fase Uint8 number; // Numero de fase
}; };
struct Effect { struct Effect {
bool flash; // Indica si se ha de pintar la pantalla de blanco bool flash; // Indica si se ha de pintar la pantalla de blanco
bool shake; // Indica si se ha de agitar la pantalla bool shake; // Indica si se ha de agitar la pantalla
Uint8 shakeCounter; // Contador para medir el tiempo que dura el efecto Uint8 shake_counter; // Contador para medir el tiempo que dura el efecto
}; };
// Estado para el efecto de agitación intensa (muerte del jugador) // Estado para el efecto de agitación intensa (muerte del jugador)
struct DeathShake { struct DeathShake {
bool active; // Indica si el efecto está activo bool active; // Indica si el efecto está activo
Uint8 step; // Paso actual del efecto (0-7) Uint8 step; // Paso actual del efecto (0-7)
Uint32 lastStepTicks; // Ticks del último paso Uint32 last_step_ticks; // Ticks del último paso
}; };
// Fases de la secuencia de muerte del jugador // Fases de la secuencia de muerte del jugador
enum class DeathPhase : std::uint8_t { None, enum class DeathPhase : std::uint8_t {
Shaking, NONE,
Waiting, SHAKING,
Done }; WAITING,
DONE
};
// Estado de la secuencia de muerte del jugador // Estado de la secuencia de muerte del jugador
struct DeathSequence { struct DeathSequence {
DeathPhase phase; // Fase actual DeathPhase phase; // Fase actual
Uint32 phaseStartTicks; // Ticks del inicio de la fase actual Uint32 phase_start_ticks; // Ticks del inicio de la fase actual
Player *player; // Jugador que está muriendo Player *player; // Jugador que está muriendo
}; };
struct Helper { struct Helper {
bool needCoffee; // Indica si se necesitan cafes bool need_coffee; // Indica si se necesitan cafes
bool needCoffeeMachine; // Indica si se necesita PowerUp bool need_coffee_machine; // Indica si se necesita PowerUp
bool needPowerBall; // Indica si se necesita una PowerBall bool need_power_ball; // Indica si se necesita una PowerBall
int counter; // Contador para no dar ayudas consecutivas int counter; // Contador para no dar ayudas consecutivas
int itemPoints1Odds; // Probabilidad de aparición del objeto int item_disk_odds; // Probabilidad de aparición del objeto
int itemPoints2Odds; // Probabilidad de aparición del objeto int item_gavina_odds; // Probabilidad de aparición del objeto
int itemPoints3Odds; // Probabilidad de aparición del objeto int item_paco_odds; // Probabilidad de aparición del objeto
int itemClockOdds; // Probabilidad de aparición del objeto int item_clock_odds; // Probabilidad de aparición del objeto
int itemCoffeeOdds; // Probabilidad de aparición del objeto int item_coffee_odds; // Probabilidad de aparición del objeto
int itemCoffeeMachineOdds; // Probabilidad de aparición del objeto int item_coffee_machine_odds; // Probabilidad de aparición del objeto
}; };
struct Demo { struct Demo {
@@ -123,133 +125,133 @@ class Game {
bool recording; // Indica si está activado el modo para grabar la demo bool recording; // Indica si está activado el modo para grabar la demo
Uint16 counter; // Contador para el modo demo Uint16 counter; // Contador para el modo demo
DemoKeys keys; // Variable con las pulsaciones de teclas del modo demo DemoKeys keys; // Variable con las pulsaciones de teclas del modo demo
DemoKeys dataFile[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo DemoKeys data_file[TOTAL_DEMO_DATA]; // Datos del fichero con los movimientos para la demo
}; };
// Objetos y punteros // Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer_; // El renderizador de la ventana
Section *section; // Seccion actual dentro del juego Section *section_; // Seccion actual dentro del juego
std::vector<Player *> players; // Vector con los jugadores std::vector<Player *> players_; // Vector con los jugadores
std::vector<Balloon *> balloons; // Vector con los globos std::vector<Balloon *> balloons_; // Vector con los globos
std::vector<Bullet *> bullets; // Vector con las balas std::vector<Bullet *> bullets_; // Vector con las balas
std::vector<Item *> items; // Vector con los items std::vector<Item *> items_; // Vector con los items
std::vector<SmartSprite *> smartSprites; // Vector con los smartsprites std::vector<SmartSprite *> smart_sprites_; // Vector con los smartsprites
Texture *bulletTexture; // Textura para las balas Texture *bullet_texture_; // Textura para las balas
std::vector<Texture *> itemTextures; // Vector con las texturas de los items std::vector<Texture *> item_textures_; // Vector con las texturas de los items
std::vector<Texture *> balloonTextures; // Vector con las texturas de los globos std::vector<Texture *> balloon_textures_; // Vector con las texturas de los globos
std::vector<Texture *> player1Textures; // Vector con las texturas del jugador std::vector<Texture *> player1_textures_; // Vector con las texturas del jugador
std::vector<Texture *> player2Textures; // Vector con las texturas del jugador std::vector<Texture *> player2_textures_; // Vector con las texturas del jugador
std::vector<std::vector<Texture *>> playerTextures; // Vector con todas las texturas de los jugadores; std::vector<std::vector<Texture *>> player_textures_; // Vector con todas las texturas de los jugadores;
Texture *gameBuildingsTexture; // Textura con los edificios de fondo Texture *game_buildings_texture_; // Textura con los edificios de fondo
Texture *gameCloudsTexture; // Textura con las nubes de fondo Texture *game_clouds_texture_; // Textura con las nubes de fondo
Texture *gameGrassTexture; // Textura con la hierba del suelo Texture *game_grass_texture_; // Textura con la hierba del suelo
Texture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase Texture *game_power_meter_texture_; // Textura con el marcador de poder de la fase
Texture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego Texture *game_sky_colors_texture_; // Textura con los diferentes colores de fondo del juego
Texture *gameTextTexture; // Textura para los sprites con textos Texture *game_text_texture_; // Textura para los sprites con textos
Texture *gameOverTexture; // Textura para la pantalla de game over Texture *game_over_texture_; // Textura para la pantalla de game over
Texture *gameOverEndTexture; // Textura para la pantalla de game over de acabar el juego Texture *game_over_end_texture_; // Textura para la pantalla de game over de acabar el juego
std::vector<std::vector<std::string> *> itemAnimations; // Vector con las animaciones de los items std::vector<std::vector<std::string> *> item_animations_; // Vector con las animaciones de los items
std::vector<std::vector<std::string> *> playerAnimations; // Vector con las animaciones del jugador std::vector<std::vector<std::string> *> player_animations_; // Vector con las animaciones del jugador
std::vector<std::vector<std::string> *> balloonAnimations; // Vector con las animaciones de los globos std::vector<std::vector<std::string> *> balloon_animations_; // Vector con las animaciones de los globos
Text *text; // Fuente para los textos del juego Text *text_; // Fuente para los textos del juego
Text *textBig; // Fuente de texto grande Text *text_big_; // Fuente de texto grande
Text *textScoreBoard; // Fuente para el marcador del juego Text *text_scoreboard_; // Fuente para el marcador del juego
Text *textNokia2; // Otra fuente de texto para mensajes Text *text_nokia2_; // Otra fuente de texto para mensajes
Text *textNokiaBig2; // Y la versión en grande Text *text_nokia_big2_; // Y la versión en grande
Menu *gameOverMenu; // Menú de la pantalla de game over Menu *game_over_menu_; // Menú de la pantalla de game over
Menu *pauseMenu; // Menú de la pantalla de pausa Menu *pause_menu_; // Menú de la pantalla de pausa
Fade *fade; // Objeto para renderizar fades Fade *fade_; // Objeto para renderizar fades
SDL_Event *eventHandler; // Manejador de eventos SDL_Event *event_handler_; // Manejador de eventos
MovingSprite *clouds1A; // Sprite para las nubes superiores MovingSprite *clouds1_a_; // Sprite para las nubes superiores
MovingSprite *clouds1B; // Sprite para las nubes superiores MovingSprite *clouds1_b_; // Sprite para las nubes superiores
MovingSprite *clouds2A; // Sprite para las nubes inferiores MovingSprite *clouds2_a_; // Sprite para las nubes inferiores
MovingSprite *clouds2B; // Sprite para las nubes inferiores MovingSprite *clouds2_b_; // Sprite para las nubes inferiores
SmartSprite *n1000Sprite; // Sprite con el texto 1.000 SmartSprite *n1000_sprite_; // Sprite con el texto 1.000
SmartSprite *n2500Sprite; // Sprite con el texto 2.500 SmartSprite *n2500_sprite_; // Sprite con el texto 2.500
SmartSprite *n5000Sprite; // Sprite con el texto 5.000 SmartSprite *n5000_sprite_; // Sprite con el texto 5.000
Sprite *buildingsSprite; // Sprite con los edificios de fondo Sprite *buildings_sprite_; // Sprite con los edificios de fondo
Sprite *skyColorsSprite; // Sprite con los graficos del degradado de color de fondo Sprite *sky_colors_sprite_; // Sprite con los graficos del degradado de color de fondo
Sprite *grassSprite; // Sprite para la hierba Sprite *grass_sprite_; // Sprite para la hierba
Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase Sprite *power_meter_sprite_; // Sprite para el medidor de poder de la fase
Sprite *gameOverSprite; // Sprite para dibujar los graficos del game over Sprite *game_over_sprite_; // Sprite para dibujar los graficos del game over
Sprite *gameOverEndSprite; // Sprite para dibujar los graficos del game over de acabar el juego Sprite *game_over_end_sprite_; // Sprite para dibujar los graficos del game over de acabar el juego
JA_Sound_t *balloonSound; // Sonido para la explosión del globo JA_Sound_t *balloon_sound_; // Sonido para la explosión del globo
JA_Sound_t *bulletSound; // Sonido para los disparos JA_Sound_t *bullet_sound_; // Sonido para los disparos
JA_Sound_t *playerCollisionSound; // Sonido para la colisión del jugador con un enemigo JA_Sound_t *player_collision_sound_; // Sonido para la colisión del jugador con un enemigo
JA_Sound_t *hiScoreSound; // Sonido para cuando se alcanza la máxima puntuación JA_Sound_t *hi_score_sound_; // Sonido para cuando se alcanza la máxima puntuación
JA_Sound_t *itemDropSound; // Sonido para cuando se genera un item JA_Sound_t *item_drop_sound_; // Sonido para cuando se genera un item
JA_Sound_t *itemPickUpSound; // Sonido para cuando se recoge un item JA_Sound_t *item_pick_up_sound_; // Sonido para cuando se recoge un item
JA_Sound_t *coffeeOutSound; // Sonido para cuando el jugador pierde el café al recibir un impacto JA_Sound_t *coffee_out_sound_; // Sonido para cuando el jugador pierde el café al recibir un impacto
JA_Sound_t *stageChangeSound; // Sonido para cuando se cambia de fase JA_Sound_t *stage_change_sound_; // Sonido para cuando se cambia de fase
JA_Sound_t *bubble1Sound; // Sonido para cuando el jugador muere JA_Sound_t *bubble1_sound_; // Sonido para cuando el jugador muere
JA_Sound_t *bubble2Sound; // Sonido para cuando el jugador muere JA_Sound_t *bubble2_sound_; // Sonido para cuando el jugador muere
JA_Sound_t *bubble3Sound; // Sonido para cuando el jugador muere JA_Sound_t *bubble3_sound_; // Sonido para cuando el jugador muere
JA_Sound_t *bubble4Sound; // Sonido para cuando el jugador muere JA_Sound_t *bubble4_sound_; // Sonido para cuando el jugador muere
JA_Sound_t *clockSound; // Sonido para cuando se detiene el tiempo con el item reloj JA_Sound_t *clock_sound_; // Sonido para cuando se detiene el tiempo con el item reloj
JA_Sound_t *powerBallSound; // Sonido para cuando se explota una Power Ball JA_Sound_t *power_ball_sound_; // Sonido para cuando se explota una Power Ball
JA_Sound_t *coffeeMachineSound; // Sonido para cuando la máquina de café toca el suelo JA_Sound_t *coffee_machine_sound_; // Sonido para cuando la máquina de café toca el suelo
JA_Music_t *gameMusic; // Musica de fondo JA_Music_t *game_music_; // Musica de fondo
// Variables // Variables
int numPlayers; // Numero de jugadores int num_players_; // Numero de jugadores
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa
Uint8 ticksSpeed; // Velocidad a la que se repiten los bucles del programa Uint8 ticks_speed_; // Velocidad a la que se repiten los bucles del programa
Uint32 hiScore; // Puntuación máxima Uint32 hi_score_; // Puntuación máxima
bool hiScoreAchieved; // Indica si se ha superado la puntuación máxima bool hi_score_achieved_; // Indica si se ha superado la puntuación máxima
std::string hiScoreName; // Nombre del jugador que ostenta la máxima puntuación std::string hi_score_name_; // Nombre del jugador que ostenta la máxima puntuación
Stage stage[10]; // Variable con los datos de cada pantalla Stage stage_[10]; // Variable con los datos de cada pantalla
Uint8 currentStage; // Indica la fase actual Uint8 current_stage_; // Indica la fase actual
Uint8 stageBitmapCounter; // Contador para el tiempo visible del texto de Stage Uint8 stage_bitmap_counter_; // Contador para el tiempo visible del texto de Stage
float stageBitmapPath[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto float stage_bitmap_path_[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto
float getReadyBitmapPath[STAGE_COUNTER]; // Vector con los puntos X por donde se desplaza el texto float get_ready_bitmap_path_[STAGE_COUNTER]; // Vector con los puntos X por donde se desplaza el texto
Uint16 deathCounter; // Contador para la animación de muerte del jugador Uint16 death_counter_; // Contador para la animación de muerte del jugador
Uint8 menaceCurrent; // Nivel de amenaza actual Uint8 menace_current_; // Nivel de amenaza actual
Uint8 menaceThreshold; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el numero de globos Uint8 menace_threshold_; // Umbral del nivel de amenaza. Si el nivel de amenaza cae por debajo del umbral, se generan más globos. Si el umbral aumenta, aumenta el numero de globos
bool timeStopped; // Indica si el tiempo está detenido bool time_stopped_; // Indica si el tiempo está detenido
Uint16 timeStoppedCounter; // Temporizador para llevar la cuenta del tiempo detenido Uint16 time_stopped_counter_; // Temporizador para llevar la cuenta del tiempo detenido
Uint32 counter; // Contador para el juego Uint32 counter_; // Contador para el juego
Uint32 scoreDataFile[TOTAL_SCORE_DATA]; // Datos del fichero de puntos Uint32 score_data_file_[TOTAL_SCORE_DATA]; // Datos del fichero de puntos
SDL_Rect skyColorsRect[4]; // Vector con las coordenadas de los 4 colores de cielo SDL_Rect sky_colors_rect_[4]; // Vector con las coordenadas de los 4 colores de cielo
Uint16 balloonsPopped; // Lleva la cuenta de los globos explotados Uint16 balloons_popped_; // Lleva la cuenta de los globos explotados
Uint8 lastEnemyDeploy; // Guarda cual ha sido la última formación desplegada para no repetir; Uint8 last_enemy_deploy_; // Guarda cual ha sido la última formación desplegada para no repetir;
int enemyDeployCounter; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero int enemy_deploy_counter_; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero
float enemySpeed; // Velocidad a la que se mueven los enemigos float enemy_speed_; // Velocidad a la que se mueven los enemigos
float defaultEnemySpeed; // Velocidad base de los enemigos, sin incrementar float default_enemy_speed_; // Velocidad base de los enemigos, sin incrementar
Effect effect; // Variable para gestionar los efectos visuales Effect effect_; // Variable para gestionar los efectos visuales
DeathShake deathShake; // Variable para gestionar el efecto de agitación intensa DeathShake death_shake_; // Variable para gestionar el efecto de agitación intensa
DeathSequence deathSequence; // Variable para gestionar la secuencia de muerte DeathSequence death_sequence_; // Variable para gestionar la secuencia de muerte
Helper helper; // Variable para gestionar las ayudas Helper helper_; // Variable para gestionar las ayudas
bool powerBallEnabled; // Indica si hay una powerball ya activa bool power_ball_enabled_; // Indica si hay una powerball ya activa
Uint8 powerBallCounter; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra Uint8 power_ball_counter_; // Contador de formaciones enemigas entre la aparicion de una PowerBall y otra
bool coffeeMachineEnabled; // Indica si hay una máquina de café en el terreno de juego bool coffee_machine_enabled_; // Indica si hay una máquina de café en el terreno de juego
bool gameCompleted; // Indica si se ha completado la partida, llegando al final de la ultima pantalla bool game_completed_; // Indica si se ha completado la partida, llegando al final de la ultima pantalla
int gameCompletedCounter; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos int game_completed_counter_; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos
Uint8 difficulty; // Dificultad del juego Uint8 difficulty_; // Dificultad del juego
float difficultyScoreMultiplier; // Multiplicador de puntos en función de la dificultad float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad
Color difficultyColor; // Color asociado a la dificultad Color difficulty_color_; // Color asociado a la dificultad
Uint8 onePlayerControl; // Variable para almacenar el valor de las opciones Uint8 player_one_control_; // Variable para almacenar el valor de las opciones
EnemyFormation enemyFormation[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas EnemyFormation enemy_formation_[NUMBER_OF_ENEMY_FORMATIONS]; // Vector con todas las formaciones enemigas
EnemyPool enemyPool[10]; // Variable con los diferentes conjuntos de formaciones enemigas EnemyPool enemy_pool_[10]; // Variable con los diferentes conjuntos de formaciones enemigas
Uint8 lastStageReached; // Contiene el numero de la última pantalla que se ha alcanzado Uint8 last_stage_reached_; // Contiene el numero de la última pantalla que se ha alcanzado
Demo demo; // Variable con todas las variables relacionadas con el modo demo Demo demo_; // Variable con todas las variables relacionadas con el modo demo
int totalPowerToCompleteGame; // La suma del poder necesario para completar todas las fases int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
int cloudsSpeed{0}; // Velocidad a la que se desplazan las nubes int clouds_speed_{0}; // Velocidad a la que se desplazan las nubes
int pauseCounter; // Contador para salir del menu de pausa y volver al juego int pause_counter_; // Contador para salir del menu de pausa y volver al juego
bool leavingPauseMenu; // Indica si esta saliendo del menu de pausa para volver al juego bool leaving_pause_menu_; // Indica si esta saliendo del menu de pausa para volver al juego
bool pauseInitialized; // Indica si la pausa ha sido inicializada bool pause_initialized_; // Indica si la pausa ha sido inicializada
bool gameOverInitialized; // Indica si el game over ha sido inicializado bool game_over_initialized_; // Indica si el game over ha sido inicializado
int gameOverPostFade; // Opción a realizar cuando termina el fundido del game over int game_over_post_fade_; // Opción a realizar cuando termina el fundido del game over
#ifdef PAUSE #ifdef PAUSE
bool pause; bool pause;
#endif #endif
@@ -375,7 +377,7 @@ class Game {
void renderBullets(); void renderBullets();
// Crea un objeto bala // Crea un objeto bala
void createBullet(int x, int y, Bullet::Kind kind, bool poweredUp, int owner); void createBullet(int x, int y, Bullet::Kind kind, bool powered_up, int owner);
// Vacia el vector de balas // Vacia el vector de balas
void freeBullets(); void freeBullets();
@@ -520,7 +522,7 @@ class Game {
public: public:
// Constructor // Constructor
Game(int numPlayers, int currentStage, SDL_Renderer *renderer, bool demo, Section *section); Game(int num_players, int current_stage, SDL_Renderer *renderer, bool demo, Section *section);
// Destructor // Destructor
~Game(); ~Game();
File diff suppressed because it is too large Load Diff
+101 -132
View File
@@ -18,144 +18,113 @@ class Texture;
struct JA_Music_t; struct JA_Music_t;
struct JA_Sound_t; struct JA_Sound_t;
// Textos
constexpr const char *TEXT_COPYRIGHT = "@2020 JailDesigner (v2.3.4)";
// Contadores
constexpr int TITLE_COUNTER = 800;
// Cantidad de eventos de la pantalla de título
constexpr int TITLE_TOTAL_EVENTS = 2;
class Title { class Title {
private:
struct MenuData {
Menu *title; // Menu de la pantalla de título
Menu *options; // Menú de la pantalla de opciones
Menu *playerSelect; // Menu para elegir jugador
Menu *active; // Menu activo (de momento para la pantalla del titulo)
bool keyPressed; // Variable para evitar la repetición de teclas en los menus
};
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Instructions *instructions{nullptr}; // Objeto para la sección de las instrucciones
Game *demoGame{nullptr}; // Objeto para lanzar la demo del juego
SDL_Event *eventHandler; // Manejador de eventos
Section *section; // Indicador para el bucle del titulo
Texture *dustTexture; // Textura con los graficos del polvo
Texture *coffeeTexture; // Textura con los graficos de la palabra coffee
Texture *crisisTexture; // Textura con los graficos de la plabra crisis
Texture *gradientTexture; // Textura con los graficos para el degradado del fondo del titulo
SDL_Rect backgroundWindow; // Ventana visible para la textura de fondo del titulo
SDL_Texture *background; // Textura dibujar el fondo del titulo
AnimatedSprite *dustBitmapL; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
AnimatedSprite *dustBitmapR; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
SmartSprite *coffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo
SmartSprite *crisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo
Sprite *gradient; // Sprite para dibujar el degradado del titulo
Text *text1; // Objeto de texto para poder escribir textos en pantalla
Text *text2; // Objeto de texto para poder escribir textos en pantalla
Fade *fade; // Objeto para realizar fundidos en pantalla
// Variable
JA_Music_t *titleMusic; // Musica para el titulo
JA_Sound_t *crashSound; // Sonido con el impacto del título
int backgroundCounter; // Temporizador para el fondo de tiles de la pantalla de titulo
int counter; // Temporizador para la pantalla de titulo
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
Uint8 backgroundMode; // Variable para almacenar el tipo de efecto que hará el fondo de la pantalla de titulo
float sin[360]; // Vector con los valores del seno precalculados
bool menuVisible; // Indicador para saber si se muestra el menu del titulo o la frase intermitente
bool demo; // Indica si el modo demo estará activo
Section nextSection; // Indica cual es la siguiente sección a cargar cuando termine el contador del titulo
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
Uint8 postFade; // Opción a realizar cuando termina el fundido
MenuData menu; // Variable con todos los objetos menus y sus variables
// Snapshot per a permetre CANCEL al menú d'opcions.
Options::Video prevVideo;
Options::Window prevWindow;
Options::Settings prevSettings;
std::vector<InputDevice> prevInputs;
std::vector<InputDevice> availableInputDevices; // Vector con todos los metodos de control disponibles
std::vector<int> deviceIndex; // Indice para el jugador [i] del vector de dispositivos de entrada disponibles
// Variables para la vibración del título (SUBSECTION_TITLE_2)
int vibrationStep; // Paso actual de la vibración
int vibrationCoffeeBaseX{0}; // Posición X base del bitmap Coffee
int vibrationCrisisBaseX{0}; // Posición X base del bitmap Crisis
bool vibrationInitialized; // Indica si se han capturado las posiciones base
// Variables para sub-estados delegados (instrucciones y demo)
bool instructionsActive; // Indica si las instrucciones están activas
bool demoGameActive; // Indica si el juego demo está activo
Instructions::Mode instructionsMode{Instructions::Mode::AUTO}; // Modo de las instrucciones activas
bool demoThenInstructions; // Indica si tras la demo hay que mostrar instrucciones
// Inicializa los valores
void init();
// Actualiza las variables del objeto
void update();
// Dibuja el objeto en pantalla
void render();
// Comprueba las entradas
void checkInput();
// Actualiza el tileado de fondo
void updateBG();
// Cambia el valor de la variable de modo de pantalla completa
static void switchFullScreenModeVar();
// Actualiza los elementos de los menus
void updateMenuLabels() const;
// Aplica las opciones de menu seleccionadas
void applyOptions();
// Ejecuta la parte donde se muestran las instrucciones
void runInstructions(Instructions::Mode mode);
// Ejecuta el juego en modo demo
void runDemoGame();
// Modifica las opciones para los controles de los jugadores
auto updatePlayerInputs(int numPlayer) -> bool;
// Crea el mosaico de fondo del titulo
void createTiledBackground();
// Comprueba cuantos mandos hay conectados para gestionar el menu de opciones
void checkInputDevices();
// Recarga las texturas
void reLoadTextures();
public: public:
// Constructor Title(SDL_Renderer *renderer, Section *section); // Constructor
Title(SDL_Renderer *renderer, Section *section); ~Title(); // Destructor
// Destructor
~Title();
Title(const Title &) = delete; Title(const Title &) = delete;
auto operator=(const Title &) -> Title & = delete; auto operator=(const Title &) -> Title & = delete;
// Bucle para el titulo del juego void run(); // Bucle para el titulo del juego
void run(); void iterate(); // Ejecuta un frame
void handleEvent(const SDL_Event *event); // Procesa un evento
// Ejecuta un frame private:
void iterate(); static constexpr const char *COPYRIGHT = "@2020 JailDesigner (v2.3.4)";
static constexpr int COUNTER = 800;
// Procesa un evento struct MenuData {
void handleEvent(const SDL_Event *event); Menu *title; // Menu de la pantalla de título
Menu *options; // Menú de la pantalla de opciones
Menu *player_select; // Menu para elegir jugador
Menu *active; // Menu activo (de momento para la pantalla del titulo)
bool key_pressed; // Variable para evitar la repetición de teclas en los menus
};
// Objetos y punteros
SDL_Renderer *renderer_; // El renderizador de la ventana
Instructions *instructions_{nullptr}; // Objeto para la sección de las instrucciones
Game *demo_game_{nullptr}; // Objeto para lanzar la demo del juego
SDL_Event *event_handler_; // Manejador de eventos
Section *section_; // Indicador para el bucle del titulo
Texture *dust_texture_; // Textura con los graficos del polvo
Texture *coffee_texture_; // Textura con los graficos de la palabra coffee
Texture *crisis_texture_; // Textura con los graficos de la plabra crisis
Texture *gradient_texture_; // Textura con los graficos para el degradado del fondo del titulo
SDL_Rect background_window_; // Ventana visible para la textura de fondo del titulo
SDL_Texture *background_; // Textura dibujar el fondo del titulo
AnimatedSprite *dust_bitmap_left_; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
AnimatedSprite *dust_bitmap_right_; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
SmartSprite *coffee_bitmap_; // Sprite con la palabra COFFEE para la pantalla de titulo
SmartSprite *crisis_bitmap_; // Sprite con la palabra CRISIS para la pantalla de titulo
Sprite *gradient_; // Sprite para dibujar el degradado del titulo
Text *text1_; // Objeto de texto para poder escribir textos en pantalla
Text *text2_; // Objeto de texto para poder escribir textos en pantalla
Fade *fade_; // Objeto para realizar fundidos en pantalla
// Variables
JA_Music_t *title_music_; // Musica para el titulo
JA_Sound_t *crash_sound_; // Sonido con el impacto del título
int background_counter_; // Temporizador para el fondo de tiles de la pantalla de titulo
int counter_; // Temporizador para la pantalla de titulo
Uint32 ticks_; // Contador de ticks para ajustar la velocidad del programa
Uint8 background_mode_; // Variable para almacenar el tipo de efecto que hará el fondo de la pantalla de titulo
float sin_[360]; // Vector con los valores del seno precalculados
bool menu_visible_; // Indicador para saber si se muestra el menu del titulo o la frase intermitente
bool demo_; // Indica si el modo demo estará activo
Section next_section_; // Indica cual es la siguiente sección a cargar cuando termine el contador del titulo
Uint32 ticks_speed_; // Velocidad a la que se repiten los bucles del programa
Uint8 post_fade_; // Opción a realizar cuando termina el fundido
MenuData menu_; // Variable con todos los objetos menus y sus variables
// Snapshot per a permetre CANCEL al menú d'opcions.
Options::Video prev_video_;
Options::Window prev_window_;
Options::Settings prev_settings_;
std::vector<InputDevice> prev_inputs_;
std::vector<InputDevice> available_input_devices_; // Vector con todos los metodos de control disponibles
std::vector<int> device_index_; // Indice para el jugador [i] del vector de dispositivos de entrada disponibles
// Variables para la vibración del título (SUBSECTION_TITLE_2)
int vibration_step_; // Paso actual de la vibración
int vibration_coffee_base_x_{0}; // Posición X base del bitmap Coffee
int vibration_crisis_base_x_{0}; // Posición X base del bitmap Crisis
bool vibration_initialized_; // Indica si se han capturado las posiciones base
// Variables para sub-estados delegados (instrucciones y demo)
bool instructions_active_; // Indica si las instrucciones están activas
bool demo_game_active_; // Indica si el juego demo está activo
Instructions::Mode instructions_mode_{Instructions::Mode::AUTO}; // Modo de las instrucciones activas
bool demo_then_instructions_; // Indica si tras la demo hay que mostrar instrucciones
void init(); // Inicializa los valores
void update(); // Actualiza las variables del objeto
void render(); // Dibuja el objeto en pantalla
void checkInput(); // Comprueba las entradas
// Helpers de update, uno por cada subsección y por cada switch dentro del título 3
void updateTitle1();
void updateTitle2();
void updateTitle3();
void handlePostFadeAction();
void handleTitleMenuSelection();
void handlePlayerSelectMenuSelection();
void handleOptionsMenuSelection();
void updateBG(); // Actualiza el tileado de fondo
static void switchFullScreenModeVar(); // Cambia el valor de la variable de modo de pantalla completa
void updateMenuLabels() const; // Actualiza los elementos de los menus
void applyOptions(); // Aplica las opciones de menu seleccionadas
void runInstructions(Instructions::Mode mode); // Ejecuta la parte donde se muestran las instrucciones
void runDemoGame(); // Ejecuta el juego en modo demo
auto updatePlayerInputs(int num_player) -> bool; // Modifica las opciones para los controles de los jugadores
void createTiledBackground(); // Crea el mosaico de fondo del titulo
void checkInputDevices(); // Comprueba cuantos mandos hay conectados para gestionar el menu de opciones
void reLoadTextures(); // Recarga las texturas
}; };