diff --git a/source/balloon.h b/source/balloon.h index 9b8c445..3264ab2 100644 --- a/source/balloon.h +++ b/source/balloon.h @@ -9,63 +9,63 @@ class AnimatedSprite; class Texture; // Cantidad de elementos del vector con los valores de la deformación del globo al rebotar -#define MAX_BOUNCE 10 +constexpr int MAX_BOUNCE = 10; // Tipos de globo -#define BALLOON_1 1 -#define BALLOON_2 2 -#define BALLOON_3 3 -#define BALLOON_4 4 -#define HEXAGON_1 5 -#define HEXAGON_2 6 -#define HEXAGON_3 7 -#define HEXAGON_4 8 -#define POWER_BALL 9 +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 -#define BALLOON_SCORE_1 50 -#define BALLOON_SCORE_2 100 -#define BALLOON_SCORE_3 200 -#define BALLOON_SCORE_4 400 +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 -#define BALLOON_SIZE_1 1 -#define BALLOON_SIZE_2 2 -#define BALLOON_SIZE_3 3 -#define BALLOON_SIZE_4 4 +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 -#define BALLOON_CLASS 0 -#define HEXAGON_CLASS 1 +constexpr int BALLOON_CLASS = 0; +constexpr int HEXAGON_CLASS = 1; // Velocidad del globo -#define BALLOON_VELX_POSITIVE 0.7f -#define BALLOON_VELX_NEGATIVE -0.7f +constexpr float BALLOON_VELX_POSITIVE = 0.7f; +constexpr float BALLOON_VELX_NEGATIVE = -0.7f; -// Indice para las animaciones de los globos -#define BALLOON_MOVING_ANIMATION 0 -#define BALLOON_POP_ANIMATION 1 -#define BALLOON_BORN_ANIMATION 2 +// Índice para las animaciones de los globos +constexpr int BALLOON_MOVING_ANIMATION = 0; +constexpr int BALLOON_POP_ANIMATION = 1; +constexpr int BALLOON_BORN_ANIMATION = 2; // Cantidad posible de globos -#define MAX_BALLOONS 100 +constexpr int MAX_BALLOONS = 100; // Velocidades a las que se mueven los globos -#define BALLOON_SPEED_1 0.60f -#define BALLOON_SPEED_2 0.70f -#define BALLOON_SPEED_3 0.80f -#define BALLOON_SPEED_4 0.90f -#define BALLOON_SPEED_5 1.00f +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 -#define BALLOON_WIDTH_1 8 -#define BALLOON_WIDTH_2 13 -#define BALLOON_WIDTH_3 21 -#define BALLOON_WIDTH_4 37 +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 -#define POWERBALL_SCREENPOWER_MINIMUM 10 -#define POWERBALL_COUNTER 8 +constexpr int POWERBALL_SCREENPOWER_MINIMUM = 10; +constexpr int POWERBALL_COUNTER = 8; // Clase Balloon class Balloon diff --git a/source/bullet.h b/source/bullet.h index e4e8003..0956948 100644 --- a/source/bullet.h +++ b/source/bullet.h @@ -7,13 +7,13 @@ class Sprite; class Texture; // Tipos de bala -#define BULLET_UP 1 -#define BULLET_LEFT 2 -#define BULLET_RIGHT 3 +constexpr int BULLET_UP = 1; +constexpr int BULLET_LEFT = 2; +constexpr int BULLET_RIGHT = 3; -// Tipos de retorno de la funcion move de la bala -#define BULLET_MOVE_OK 0 -#define BULLET_MOVE_OUT 1 +// Tipos de retorno de la función move de la bala +constexpr int BULLET_MOVE_OK = 0; +constexpr int BULLET_MOVE_OUT = 1; // Clase Bullet class Bullet diff --git a/source/const.h b/source/const.h index 4730344..3ebc977 100644 --- a/source/const.h +++ b/source/const.h @@ -5,56 +5,56 @@ #include "lang.h" // Tamaño de bloque -#define BLOCK 8 -#define HALF_BLOCK BLOCK / 2 +constexpr int BLOCK = 8; +constexpr int HALF_BLOCK = BLOCK / 2; // Tamaño de la pantalla virtual -#define GAMECANVAS_WIDTH 256 -#define GAMECANVAS_HEIGHT 192 +constexpr int GAMECANVAS_WIDTH = 256; +constexpr int GAMECANVAS_HEIGHT = 192; // Zona de juego -const int PLAY_AREA_TOP = (0 * BLOCK); -const int PLAY_AREA_BOTTOM = GAMECANVAS_HEIGHT - (4 * BLOCK); -const int PLAY_AREA_LEFT = (0 * BLOCK); -const int PLAY_AREA_RIGHT = GAMECANVAS_WIDTH - (0 * BLOCK); -const int PLAY_AREA_WIDTH = PLAY_AREA_RIGHT - PLAY_AREA_LEFT; -const int PLAY_AREA_HEIGHT = PLAY_AREA_BOTTOM - PLAY_AREA_TOP; -const int PLAY_AREA_CENTER_X = PLAY_AREA_LEFT + (PLAY_AREA_WIDTH / 2); -const int PLAY_AREA_CENTER_FIRST_QUARTER_X = (PLAY_AREA_WIDTH / 4); -const int PLAY_AREA_CENTER_THIRD_QUARTER_X = (PLAY_AREA_WIDTH / 4) * 3; -const int PLAY_AREA_CENTER_Y = PLAY_AREA_TOP + (PLAY_AREA_HEIGHT / 2); -const int PLAY_AREA_FIRST_QUARTER_Y = PLAY_AREA_HEIGHT / 4; -const int PLAY_AREA_THIRD_QUARTER_Y = (PLAY_AREA_HEIGHT / 4) * 3; +constexpr int PLAY_AREA_TOP = (0 * BLOCK); +constexpr int PLAY_AREA_BOTTOM = GAMECANVAS_HEIGHT - (4 * BLOCK); +constexpr int PLAY_AREA_LEFT = (0 * BLOCK); +constexpr int PLAY_AREA_RIGHT = GAMECANVAS_WIDTH - (0 * BLOCK); +constexpr int PLAY_AREA_WIDTH = PLAY_AREA_RIGHT - PLAY_AREA_LEFT; +constexpr int PLAY_AREA_HEIGHT = PLAY_AREA_BOTTOM - PLAY_AREA_TOP; +constexpr int PLAY_AREA_CENTER_X = PLAY_AREA_LEFT + (PLAY_AREA_WIDTH / 2); +constexpr int PLAY_AREA_CENTER_FIRST_QUARTER_X = (PLAY_AREA_WIDTH / 4); +constexpr int PLAY_AREA_CENTER_THIRD_QUARTER_X = (PLAY_AREA_WIDTH / 4) * 3; +constexpr int PLAY_AREA_CENTER_Y = PLAY_AREA_TOP + (PLAY_AREA_HEIGHT / 2); +constexpr int PLAY_AREA_FIRST_QUARTER_Y = PLAY_AREA_HEIGHT / 4; +constexpr int PLAY_AREA_THIRD_QUARTER_Y = (PLAY_AREA_HEIGHT / 4) * 3; // Anclajes de pantalla -const int GAMECANVAS_CENTER_X = GAMECANVAS_WIDTH / 2; -const int GAMECANVAS_FIRST_QUARTER_X = GAMECANVAS_WIDTH / 4; -const int GAMECANVAS_THIRD_QUARTER_X = (GAMECANVAS_WIDTH / 4) * 3; -const int GAMECANVAS_CENTER_Y = GAMECANVAS_HEIGHT / 2; -const int GAMECANVAS_FIRST_QUARTER_Y = GAMECANVAS_HEIGHT / 4; -const int GAMECANVAS_THIRD_QUARTER_Y = (GAMECANVAS_HEIGHT / 4) * 3; +constexpr int GAMECANVAS_CENTER_X = GAMECANVAS_WIDTH / 2; +constexpr int GAMECANVAS_FIRST_QUARTER_X = GAMECANVAS_WIDTH / 4; +constexpr int GAMECANVAS_THIRD_QUARTER_X = (GAMECANVAS_WIDTH / 4) * 3; +constexpr int GAMECANVAS_CENTER_Y = GAMECANVAS_HEIGHT / 2; +constexpr int GAMECANVAS_FIRST_QUARTER_Y = GAMECANVAS_HEIGHT / 4; +constexpr int GAMECANVAS_THIRD_QUARTER_Y = (GAMECANVAS_HEIGHT / 4) * 3; // Secciones del programa -#define SECTION_PROG_LOGO 0 -#define SECTION_PROG_INTRO 1 -#define SECTION_PROG_TITLE 2 -#define SECTION_PROG_GAME 3 -#define SECTION_PROG_QUIT 4 +constexpr int SECTION_PROG_LOGO = 0; +constexpr int SECTION_PROG_INTRO = 1; +constexpr int SECTION_PROG_TITLE = 2; +constexpr int SECTION_PROG_GAME = 3; +constexpr int SECTION_PROG_QUIT = 4; // Subsecciones -#define SUBSECTION_GAME_PLAY_1P 0 -#define SUBSECTION_GAME_PLAY_2P 1 -#define SUBSECTION_GAME_PAUSE 2 -#define SUBSECTION_GAME_GAMEOVER 3 -#define SUBSECTION_TITLE_1 3 -#define SUBSECTION_TITLE_2 4 -#define SUBSECTION_TITLE_3 5 -#define SUBSECTION_TITLE_INSTRUCTIONS 6 +constexpr int SUBSECTION_GAME_PLAY_1P = 0; +constexpr int SUBSECTION_GAME_PLAY_2P = 1; +constexpr int SUBSECTION_GAME_PAUSE = 2; +constexpr int SUBSECTION_GAME_GAMEOVER = 3; +constexpr int SUBSECTION_TITLE_1 = 3; +constexpr int SUBSECTION_TITLE_2 = 4; +constexpr int SUBSECTION_TITLE_3 = 5; +constexpr int SUBSECTION_TITLE_INSTRUCTIONS = 6; // Ningun tipo -#define NO_KIND 0 +constexpr int NO_KIND = 0; // Colores const color_t bgColor = {0x27, 0x27, 0x36}; const color_t noColor = {0xFF, 0xFF, 0xFF}; -const color_t shdwTxtColor = {0x43, 0x43, 0x4F}; \ No newline at end of file +const color_t shdwTxtColor = {0x43, 0x43, 0x4F}; diff --git a/source/director.h b/source/director.h index e974cd0..603639e 100644 --- a/source/director.h +++ b/source/director.h @@ -15,7 +15,7 @@ struct options_t; struct section_t; // Textos -#define WINDOW_CAPTION "Coffee Crisis" +constexpr const char* WINDOW_CAPTION = "Coffee Crisis"; class Director { diff --git a/source/fade.h b/source/fade.h index 6cf4dcc..aafb854 100644 --- a/source/fade.h +++ b/source/fade.h @@ -5,9 +5,9 @@ #include // for Uint8, Uint16 // Tipos de fundido -#define FADE_FULLSCREEN 0 -#define FADE_CENTER 1 -#define FADE_RANDOM_SQUARE 2 +constexpr int FADE_FULLSCREEN = 0; +constexpr int FADE_CENTER = 1; +constexpr int FADE_RANDOM_SQUARE = 2; // Clase Fade class Fade diff --git a/source/game.h b/source/game.h index 50358e3..6dc6751 100644 --- a/source/game.h +++ b/source/game.h @@ -26,31 +26,31 @@ struct JA_Music_t; struct JA_Sound_t; // Cantidad de elementos a escribir en los ficheros de datos -#define TOTAL_SCORE_DATA 3 -#define TOTAL_DEMO_DATA 2000 +constexpr int TOTAL_SCORE_DATA = 3; +constexpr int TOTAL_DEMO_DATA = 2000; // Contadores -#define STAGE_COUNTER 200 -#define SHAKE_COUNTER 10 -#define HELP_COUNTER 1000 -#define GAME_COMPLETED_START_FADE 500 -#define GAME_COMPLETED_END 700 +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 -#define NUMBER_OF_ENEMY_FORMATIONS 100 -#define MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION 50 +constexpr int NUMBER_OF_ENEMY_FORMATIONS = 100; +constexpr int MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION = 50; // 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 +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 -#define TIME_STOPPED_COUNTER 300 +constexpr int TIME_STOPPED_COUNTER = 300; // Clase Game class Game diff --git a/source/input.h b/source/input.h index 40683f8..f5255a4 100644 --- a/source/input.h +++ b/source/input.h @@ -6,6 +6,15 @@ #include // for string, basic_string #include // for vector +// Valores de repetición +constexpr bool REPEAT_TRUE = true; +constexpr bool REPEAT_FALSE = false; + +// Métodos de entrada +constexpr int INPUT_USE_KEYBOARD = 0; +constexpr int INPUT_USE_GAMECONTROLLER = 1; +constexpr int INPUT_USE_ANY = 2; + enum inputs_e { // Inputs obligatorios @@ -31,13 +40,6 @@ enum inputs_e input_number_of_inputs }; -#define REPEAT_TRUE true -#define REPEAT_FALSE false - -#define INPUT_USE_KEYBOARD 0 -#define INPUT_USE_GAMECONTROLLER 1 -#define INPUT_USE_ANY 2 - enum i_disable_e { d_notDisabled, diff --git a/source/intro.h b/source/intro.h index 5f54ac8..4a4ddaf 100644 --- a/source/intro.h +++ b/source/intro.h @@ -15,9 +15,6 @@ class Writer; struct JA_Music_t; struct section_t; -#ifndef INTRO_H -#define INTRO_H - // Clase Intro class Intro { @@ -69,5 +66,3 @@ public: // Bucle principal void run(); }; - -#endif diff --git a/source/item.h b/source/item.h index 7b66c0d..2a3b467 100644 --- a/source/item.h +++ b/source/item.h @@ -9,12 +9,12 @@ class AnimatedSprite; class Texture; // Tipos de objetos -#define ITEM_POINTS_1_DISK 1 -#define ITEM_POINTS_2_GAVINA 2 -#define ITEM_POINTS_3_PACMAR 3 -#define ITEM_CLOCK 4 -#define ITEM_COFFEE 5 -#define ITEM_COFFEE_MACHINE 6 +constexpr int ITEM_POINTS_1_DISK = 1; +constexpr int ITEM_POINTS_2_GAVINA = 2; +constexpr int ITEM_POINTS_3_PACMAR = 3; +constexpr int ITEM_CLOCK = 4; +constexpr int ITEM_COFFEE = 5; +constexpr int ITEM_COFFEE_MACHINE = 6; // Clase Item class Item diff --git a/source/lang.h b/source/lang.h index a9734ef..e155914 100644 --- a/source/lang.h +++ b/source/lang.h @@ -5,13 +5,13 @@ class Asset; // Códigos de idioma -#define es_ES 0 -#define ba_BA 1 -#define en_UK 2 -#define MAX_LANGUAGES 3 +constexpr int es_ES = 0; +constexpr int ba_BA = 1; +constexpr int en_UK = 2; +constexpr int MAX_LANGUAGES = 3; // Textos -#define MAX_TEXT_STRINGS 100 +constexpr int MAX_TEXT_STRINGS = 100; // Clase Lang class Lang diff --git a/source/logo.cpp b/source/logo.cpp index 6e173d4..5d415b8 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -11,8 +11,9 @@ #include "texture.h" // for Texture #include "utils.h" // for section_t, color_t -#define INIT_FADE 100 -#define END_LOGO 200 +// Valores de inicialización y fin +constexpr int INIT_FADE = 100; +constexpr int END_LOGO = 200; // Constructor Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, section_t *section) diff --git a/source/menu.h b/source/menu.h index fa79c98..8f54ce7 100644 --- a/source/menu.h +++ b/source/menu.h @@ -10,17 +10,17 @@ class Input; class Text; struct JA_Sound_t; -// Tipos de fondos para el menu -#define MENU_BACKGROUND_TRANSPARENT 0 -#define MENU_BACKGROUND_SOLID 1 +// Tipos de fondos para el menú +constexpr int MENU_BACKGROUND_TRANSPARENT = 0; +constexpr int MENU_BACKGROUND_SOLID = 1; // Tipos de archivos de audio -#define SOUND_ACCEPT 0 -#define SOUND_MOVE 1 -#define SOUND_CANCEL 2 +constexpr int SOUND_ACCEPT = 0; +constexpr int SOUND_MOVE = 1; +constexpr int SOUND_CANCEL = 2; -// Opciones de menu -#define MENU_NO_OPTION -1 +// Opciones de menú +constexpr int MENU_NO_OPTION = -1; // Clase Menu class Menu diff --git a/source/player.h b/source/player.h index d0205f6..cac997e 100644 --- a/source/player.h +++ b/source/player.h @@ -9,21 +9,21 @@ class AnimatedSprite; class Texture; // Contadores -#define DEATH_COUNTER 350 +constexpr int DEATH_COUNTER = 350; // Estados del jugador -#define PLAYER_STATUS_WALKING_LEFT 0 -#define PLAYER_STATUS_WALKING_RIGHT 1 -#define PLAYER_STATUS_WALKING_STOP 2 +constexpr int PLAYER_STATUS_WALKING_LEFT = 0; +constexpr int PLAYER_STATUS_WALKING_RIGHT = 1; +constexpr int PLAYER_STATUS_WALKING_STOP = 2; -#define PLAYER_STATUS_FIRING_UP 0 -#define PLAYER_STATUS_FIRING_LEFT 1 -#define PLAYER_STATUS_FIRING_RIGHT 2 -#define PLAYER_STATUS_FIRING_NO 3 +constexpr int PLAYER_STATUS_FIRING_UP = 0; +constexpr int PLAYER_STATUS_FIRING_LEFT = 1; +constexpr int PLAYER_STATUS_FIRING_RIGHT = 2; +constexpr int PLAYER_STATUS_FIRING_NO = 3; // Variables del jugador -#define PLAYER_INVULNERABLE_COUNTER 200 -#define PLAYER_POWERUP_COUNTER 1500 +constexpr int PLAYER_INVULNERABLE_COUNTER = 200; +constexpr int PLAYER_POWERUP_COUNTER = 1500; // Clase Player class Player diff --git a/source/screen.h b/source/screen.h index 4b793e8..951a357 100644 --- a/source/screen.h +++ b/source/screen.h @@ -8,8 +8,9 @@ #include "utils.h" // for color_t class Asset; -#define FILTER_NEAREST 0 -#define FILTER_LINEAL 1 +// Tipos de filtro +constexpr int FILTER_NEAREST = 0; +constexpr int FILTER_LINEAL = 1; class Screen { diff --git a/source/text.h b/source/text.h index d9cbb28..07592cc 100644 --- a/source/text.h +++ b/source/text.h @@ -7,10 +7,11 @@ class Sprite; class Texture; #include "utils.h" -#define TXT_COLOR 1 -#define TXT_SHADOW 2 -#define TXT_CENTER 4 -#define TXT_STROKE 8 +// Opciones de texto +constexpr int TXT_COLOR = 1; +constexpr int TXT_SHADOW = 2; +constexpr int TXT_CENTER = 4; +constexpr int TXT_STROKE = 8; struct offset_t { diff --git a/source/title.h b/source/title.h index af923a4..30d5357 100644 --- a/source/title.h +++ b/source/title.h @@ -23,13 +23,13 @@ struct JA_Music_t; struct JA_Sound_t; // Textos -#define TEXT_COPYRIGHT "@2020,2023 JailDesigner (v2.3.1)" +constexpr const char* TEXT_COPYRIGHT = "@2020,2023 JailDesigner (v2.3.1)"; // Contadores -#define TITLE_COUNTER 800 +constexpr int TITLE_COUNTER = 800; -// Cantidad de eventos de la pantalla de titulo -#define TITLE_TOTAL_EVENTS 2 +// Cantidad de eventos de la pantalla de título +constexpr int TITLE_TOTAL_EVENTS = 2; class Title { diff --git a/source/utils.h b/source/utils.h index 3baa125..13469f6 100644 --- a/source/utils.h +++ b/source/utils.h @@ -6,13 +6,9 @@ #include // for vector // Dificultad del juego -#define DIFFICULTY_EASY 0 -#define DIFFICULTY_NORMAL 1 -#define DIFFICULTY_HARD 2 - -// Tipo de filtro -#define FILTER_NEAREST 0 -#define FILTER_LINEAL 1 +constexpr int DIFFICULTY_EASY = 0; +constexpr int DIFFICULTY_NORMAL = 1; +constexpr int DIFFICULTY_HARD = 2; // Estructura para definir un circulo struct circle_t