Demanada ajuda a la IA pa que m'arregle un poc la meua merda: Para optimizar este código y evitar duplicar la lógica para cada jugador, podemos extraer el código común en una función reutilizable. Así, reducimos la repetición y mejoramos la legibilidad.

This commit is contained in:
2024-10-06 21:07:26 +02:00
parent 6515ec6c7b
commit 8ba77d7d5d
2 changed files with 19 additions and 17 deletions

View File

@@ -2817,6 +2817,17 @@ void Game::addScoreToScoreBoard(std::string name, int score)
manager->saveToFile(asset->get("score.bin")); manager->saveToFile(asset->get("score.bin"));
} }
// Saca del estado de GAME OVER al jugador si el otro está activo
void Game::checkAndUpdatePlayerStatus(int activePlayerIndex, int inactivePlayerIndex)
{
if (players[activePlayerIndex]->isGameOver() &&
!players[inactivePlayerIndex]->isGameOver() &&
!players[inactivePlayerIndex]->isWaiting())
{
players[activePlayerIndex]->setStatusPlaying(playerStatus::WAITING);
}
}
// Comprueba el estado de los jugadores // Comprueba el estado de los jugadores
void Game::checkPlayersStatusPlaying() void Game::checkPlayersStatusPlaying()
{ {
@@ -2835,21 +2846,9 @@ void Game::checkPlayersStatusPlaying()
} }
} }
// Saca del estado de GAME OVER al primer jugador si el segundo está activo // Comprobar estado de ambos jugadores
const bool a1 = players[0]->isGameOver(); checkAndUpdatePlayerStatus(0, 1);
const bool b1 = !players[1]->isGameOver() && !players[1]->isWaiting(); checkAndUpdatePlayerStatus(1, 0);
if (a1 && b1)
{
players[0]->setStatusPlaying(playerStatus::WAITING);
}
// Saca del estado de GAME OVER al segundo jugador si el primero está activo
const bool a2 = players[1]->isGameOver();
const bool b2 = !players[0]->isGameOver() && !players[0]->isWaiting();
if (a2 && b2)
{
players[1]->setStatusPlaying(playerStatus::WAITING);
}
} }
// Obtiene un jugador a partir de su "id" // Obtiene un jugador a partir de su "id"

View File

@@ -444,6 +444,9 @@ private:
// Añade una puntuación a la tabla de records // Añade una puntuación a la tabla de records
void addScoreToScoreBoard(std::string name, int score); void addScoreToScoreBoard(std::string name, int score);
// Saca del estado de GAME OVER al jugador si el otro está activo
void checkAndUpdatePlayerStatus(int activePlayerIndex, int inactivePlayerIndex);
// Comprueba el estado de juego de los jugadores // Comprueba el estado de juego de los jugadores
void checkPlayersStatusPlaying(); void checkPlayersStatusPlaying();