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;
// Crea los objetos
scoreboard = new ScoreBoard(renderer, asset);
scoreboard = new ScoreBoard(renderer, asset, &playerLives, &itemsPicked);
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);
eventHandler = new SDL_Event();
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
ticks = 0;
ticksSpeed = 15;
playerLives = 9;
itemsPicked = 0;
section.name = SECTION_PROG_GAME;
section.subsection = SUBSECTION_GAME_PLAY;
@@ -239,7 +241,7 @@ bool Game::changeRoom(std::string file)
room = nullptr;
// 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;
}
@@ -381,11 +383,13 @@ void Game::checkPlayerAndItems()
// Mata al jugador
void Game::killPlayer()
{
playerLives--;
// Destruye la habitacion y el jugador
delete room;
delete player;
// 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);
}

View File

@@ -40,6 +40,8 @@ private:
std::string currentRoom; // Fichero de la habitación actual
player_t spawnPoint; // Lugar de la habitación donde aparece el jugador
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.
void update();

View File

@@ -4,12 +4,13 @@
#include <sstream>
// 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
this->asset = asset;
this->renderer = renderer;
this->itemTracker = itemTracker;
this->itemsPicked = items;
// Crea los objetos
texture = new LTexture();
@@ -551,19 +552,10 @@ bool Room::itemCollision(SDL_Rect &rect)
delete items[i];
items.erase(items.begin()+i);
JA_PlaySound(itemSound);
*itemsPicked = *itemsPicked + 1;
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;
}

View File

@@ -53,6 +53,7 @@ private:
SDL_Renderer *renderer; // El renderizador de la ventana
SDL_Texture *mapTexture; // Textura para dibujar el mapa de la habitación
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
bool load(std::string file_path);
@@ -71,7 +72,7 @@ private:
public:
// 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
~Room();

View File

@@ -3,11 +3,13 @@
#include <sstream>
// Constructor
ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset)
ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, int *lives, int *items)
{
// Obten punteros a objetos
this->asset = asset;
this->renderer = renderer;
this->lives = lives;
this->items = items;
// Reserva memoria para los objetos
texture = new LTexture();
@@ -96,7 +98,7 @@ void ScoreBoard::render()
const int frame = desp % 4;
sprite->setCurrentFrame(frame);
for (int i = 0; i < num_lives; i++)
for (int i = 0; i < *lives; i++)
{
sprite->setPosX(8 + (16 * i) + desp);
index = i % color.size();
@@ -105,7 +107,8 @@ void ScoreBoard::render()
}
// 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");
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
int counter; // Contador interno
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:
// Constructor
ScoreBoard(SDL_Renderer *renderer, Asset *asset);
ScoreBoard(SDL_Renderer *renderer, Asset *asset, int *lives, int *items);
// Destructor
~ScoreBoard();