Trabajando en el marcador

This commit is contained in:
2022-08-31 22:40:22 +02:00
parent 0087815ced
commit 62e9a2ad2a
7 changed files with 24 additions and 20 deletions

Binary file not shown.

View File

@@ -15,9 +15,9 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input)
this->input = input; this->input = input;
// Crea los objetos // Crea los objetos
scoreboard = new ScoreBoard(renderer, asset); scoreboard = new ScoreBoard(renderer, asset, &playerLives, &itemsPicked);
itemTracker = new ItemTracker(); itemTracker = new ItemTracker();
room = new Room(asset->get(currentRoom), renderer, asset, itemTracker); room = new Room(asset->get(currentRoom), renderer, asset, itemTracker,&itemsPicked);
player = new Player(spawnPoint, asset->get("player01.png"), asset->get("player01.ani"), renderer, asset, input, room); player = new Player(spawnPoint, asset->get("player01.png"), asset->get("player01.ani"), renderer, asset, input, room);
eventHandler = new SDL_Event(); eventHandler = new SDL_Event();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
@@ -27,6 +27,8 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input)
// Inicializa variables // Inicializa variables
ticks = 0; ticks = 0;
ticksSpeed = 15; ticksSpeed = 15;
playerLives = 9;
itemsPicked = 0;
section.name = SECTION_PROG_GAME; section.name = SECTION_PROG_GAME;
section.subsection = SUBSECTION_GAME_PLAY; section.subsection = SUBSECTION_GAME_PLAY;
@@ -239,7 +241,7 @@ bool Game::changeRoom(std::string file)
room = nullptr; room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero // Crea un objeto habitación nuevo a partir del fichero
room = new Room(asset->get(file), renderer, asset, itemTracker); room = new Room(asset->get(file), renderer, asset, itemTracker, &itemsPicked);
success = true; success = true;
} }
@@ -381,11 +383,13 @@ void Game::checkPlayerAndItems()
// Mata al jugador // Mata al jugador
void Game::killPlayer() void Game::killPlayer()
{ {
playerLives--;
// Destruye la habitacion y el jugador // Destruye la habitacion y el jugador
delete room; delete room;
delete player; delete player;
// Crea la nueva habitación y el nuevo jugador // Crea la nueva habitación y el nuevo jugador
room = new Room(asset->get(currentRoom), renderer, asset, itemTracker); room = new Room(asset->get(currentRoom), renderer, asset, itemTracker, &itemsPicked);
player = new Player(spawnPoint, asset->get("player01.png"), asset->get("player01.ani"), renderer, asset, input, room); player = new Player(spawnPoint, asset->get("player01.png"), asset->get("player01.ani"), renderer, asset, input, room);
} }

View File

@@ -40,6 +40,8 @@ private:
std::string currentRoom; // Fichero de la habitación actual std::string currentRoom; // Fichero de la habitación actual
player_t spawnPoint; // Lugar de la habitación donde aparece el jugador player_t spawnPoint; // Lugar de la habitación donde aparece el jugador
bool debug; // Indica si el modo debug está activo bool debug; // Indica si el modo debug está activo
int playerLives; // Lleva la cuenta de ls vidas restantes del jugador
int itemsPicked; // Lleva la cuenta de los objetos recogidos
// Actualiza el juego, las variables, comprueba la entrada, etc. // Actualiza el juego, las variables, comprueba la entrada, etc.
void update(); void update();

View File

@@ -4,12 +4,13 @@
#include <sstream> #include <sstream>
// Constructor // Constructor
Room::Room(std::string file_path, SDL_Renderer *renderer, Asset *asset, ItemTracker *itemTracker) Room::Room(std::string file_path, SDL_Renderer *renderer, Asset *asset, ItemTracker *itemTracker, int *items)
{ {
// Copia los punteros a objetos // Copia los punteros a objetos
this->asset = asset; this->asset = asset;
this->renderer = renderer; this->renderer = renderer;
this->itemTracker = itemTracker; this->itemTracker = itemTracker;
this->itemsPicked = items;
// Crea los objetos // Crea los objetos
texture = new LTexture(); texture = new LTexture();
@@ -551,19 +552,10 @@ bool Room::itemCollision(SDL_Rect &rect)
delete items[i]; delete items[i];
items.erase(items.begin()+i); items.erase(items.begin()+i);
JA_PlaySound(itemSound); JA_PlaySound(itemSound);
*itemsPicked = *itemsPicked + 1;
collision = true; collision = true;
} }
} }
//for (auto item : items)
//{
// if (checkCollision(rect, item->getCollider()))
// {
// itemTracker->addItem(name, item->getPos());
// item->pick();
// JA_PlaySound(itemSound);
// collision = true;
// }
//}
return collision; return collision;
} }

View File

@@ -53,6 +53,7 @@ private:
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer; // El renderizador de la ventana
SDL_Texture *mapTexture; // Textura para dibujar el mapa de la habitación SDL_Texture *mapTexture; // Textura para dibujar el mapa de la habitación
JA_Sound itemSound; // Sonido producido al coger un objeto JA_Sound itemSound; // Sonido producido al coger un objeto
int *itemsPicked; // Puntero a la cantidad de items recogidos que lleva el juego
// Carga las variables desde un fichero // Carga las variables desde un fichero
bool load(std::string file_path); bool load(std::string file_path);
@@ -71,7 +72,7 @@ private:
public: public:
// Constructor // Constructor
Room(std::string file_path, SDL_Renderer *renderer, Asset *asset, ItemTracker *item_tracker); Room(std::string file_path, SDL_Renderer *renderer, Asset *asset, ItemTracker *item_tracker, int *items);
// Destructor // Destructor
~Room(); ~Room();

View File

@@ -3,11 +3,13 @@
#include <sstream> #include <sstream>
// Constructor // Constructor
ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset) ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, int *lives, int *items)
{ {
// Obten punteros a objetos // Obten punteros a objetos
this->asset = asset; this->asset = asset;
this->renderer = renderer; this->renderer = renderer;
this->lives = lives;
this->items = items;
// Reserva memoria para los objetos // Reserva memoria para los objetos
texture = new LTexture(); texture = new LTexture();
@@ -96,7 +98,7 @@ void ScoreBoard::render()
const int frame = desp % 4; const int frame = desp % 4;
sprite->setCurrentFrame(frame); sprite->setCurrentFrame(frame);
for (int i = 0; i < num_lives; i++) for (int i = 0; i < *lives; i++)
{ {
sprite->setPosX(8 + (16 * i) + desp); sprite->setPosX(8 + (16 * i) + desp);
index = i % color.size(); index = i % color.size();
@@ -105,7 +107,8 @@ void ScoreBoard::render()
} }
// Escribe los textos // Escribe los textos
const std::string text = "Items collected 008 Time 88875"; // const std::string text = "Items collected 008 Time 88875";
std::string text = "Items collected " + std::to_string(*items / 100) + std::to_string((*items % 100) / 10) + std::to_string(*items % 10) + " Time 88875";
const color_t color = stringToColor("white"); const color_t color = stringToColor("white");
this->text->writeColored(BLOCK, 21 * BLOCK, text, color); this->text->writeColored(BLOCK, 21 * BLOCK, text, color);
} }

View File

@@ -23,10 +23,12 @@ private:
std::vector<color_t> color; // Vector con los colores del objeto std::vector<color_t> color; // Vector con los colores del objeto
int counter; // Contador interno int counter; // Contador interno
int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color
int *lives; // Número ara mostrar en el marcador de vidas
int *items; // Número para mostrar en el marcador de items
public: public:
// Constructor // Constructor
ScoreBoard(SDL_Renderer *renderer, Asset *asset); ScoreBoard(SDL_Renderer *renderer, Asset *asset, int *lives, int *items);
// Destructor // Destructor
~ScoreBoard(); ~ScoreBoard();