Compare commits
3 Commits
924fd375ff
...
59da8fd4c6
| Author | SHA1 | Date | |
|---|---|---|---|
| 59da8fd4c6 | |||
| f64b461d75 | |||
| b9a15bd8b4 |
@@ -63,7 +63,7 @@ Game::Game(int playerID, int currentStage, Screen *screen, Asset *asset, Lang *l
|
|||||||
|
|
||||||
Game::~Game()
|
Game::~Game()
|
||||||
{
|
{
|
||||||
saveScoreFile();
|
//saveScoreFile();
|
||||||
#ifdef RECORDING
|
#ifdef RECORDING
|
||||||
saveDemoFile();
|
saveDemoFile();
|
||||||
#endif
|
#endif
|
||||||
@@ -690,16 +690,16 @@ bool Game::loadScoreFile()
|
|||||||
// Establece el valor de la máxima puntuación a partir del vector con los datos
|
// Establece el valor de la máxima puntuación a partir del vector con los datos
|
||||||
if (scoreDataFile[0] == 0)
|
if (scoreDataFile[0] == 0)
|
||||||
{
|
{
|
||||||
hiScore = 10000;
|
hiScore.score = 10000;
|
||||||
}
|
}
|
||||||
// Comprueba el checksum para ver si se ha modificado el fichero
|
// Comprueba el checksum para ver si se ha modificado el fichero
|
||||||
else if (scoreDataFile[0] % 43 == scoreDataFile[1])
|
else if (scoreDataFile[0] % 43 == scoreDataFile[1])
|
||||||
{
|
{
|
||||||
hiScore = scoreDataFile[0];
|
hiScore.score = scoreDataFile[0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hiScore = 10000;
|
hiScore.score = 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
@@ -786,8 +786,8 @@ bool Game::loadDemoFile(std::string f, demoKeys_t (*dataFile)[TOTAL_DEMO_DATA])
|
|||||||
bool Game::saveScoreFile()
|
bool Game::saveScoreFile()
|
||||||
{
|
{
|
||||||
// Almacena la máxima puntuación en el fichero junto con un checksum
|
// Almacena la máxima puntuación en el fichero junto con un checksum
|
||||||
scoreDataFile[0] = hiScore;
|
scoreDataFile[0] = hiScore.score;
|
||||||
scoreDataFile[1] = hiScore % 43;
|
scoreDataFile[1] = hiScore.score % 43;
|
||||||
|
|
||||||
bool success = true;
|
bool success = true;
|
||||||
const std::string p = asset->get("score.bin");
|
const std::string p = asset->get("score.bin");
|
||||||
@@ -916,10 +916,10 @@ void Game::updateHiScore()
|
|||||||
{
|
{
|
||||||
// Si la puntuación actual es mayor que la máxima puntuación
|
// Si la puntuación actual es mayor que la máxima puntuación
|
||||||
for (auto player : players)
|
for (auto player : players)
|
||||||
if (player->getScore() > hiScore)
|
if (player->getScore() > hiScore.score)
|
||||||
{
|
{
|
||||||
// Actualiza la máxima puntuación
|
// Actualiza la máxima puntuación
|
||||||
hiScore = player->getScore();
|
hiScore.score = player->getScore();
|
||||||
|
|
||||||
// Si se supera la máxima puntuación emite sonido
|
// Si se supera la máxima puntuación emite sonido
|
||||||
if (hiScoreAchieved == false)
|
if (hiScoreAchieved == false)
|
||||||
@@ -2815,9 +2815,10 @@ void Game::reloadTextures()
|
|||||||
void Game::setHiScore()
|
void Game::setHiScore()
|
||||||
{
|
{
|
||||||
// Carga el fichero de puntos
|
// Carga el fichero de puntos
|
||||||
loadScoreFile();
|
//loadScoreFile();
|
||||||
|
|
||||||
hiScoreName = "";
|
hiScore.score = options->game.hiScoreTable[0].score;
|
||||||
|
hiScore.name = options->game.hiScoreTable[0].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el marcador
|
// Actualiza el marcador
|
||||||
@@ -2832,8 +2833,8 @@ void Game::updateScoreboard()
|
|||||||
// Resto de marcador
|
// Resto de marcador
|
||||||
scoreboard->setStage(enemyFormations->getStage(currentStage).number);
|
scoreboard->setStage(enemyFormations->getStage(currentStage).number);
|
||||||
scoreboard->setPower((float)currentPower / (float)enemyFormations->getStage(currentStage).powerToComplete);
|
scoreboard->setPower((float)currentPower / (float)enemyFormations->getStage(currentStage).powerToComplete);
|
||||||
scoreboard->setHiScore(hiScore);
|
scoreboard->setHiScore(hiScore.score);
|
||||||
scoreboard->setHiScoreName(hiScoreName);
|
scoreboard->setHiScoreName(hiScore.name);
|
||||||
|
|
||||||
// Lógica del marcador
|
// Lógica del marcador
|
||||||
scoreboard->update();
|
scoreboard->update();
|
||||||
|
|||||||
@@ -166,9 +166,8 @@ private:
|
|||||||
// Variables
|
// Variables
|
||||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||||
int hiScore; // Puntuación máxima
|
|
||||||
bool hiScoreAchieved; // Indica si se ha superado la puntuación máxima
|
bool hiScoreAchieved; // Indica si se ha superado la puntuación máxima
|
||||||
std::string hiScoreName; // Nombre del jugador que ostenta la máxima puntuación
|
hiScoreEntry_t hiScore; // Máxima puntuación y nombre de quien la ostenta
|
||||||
int currentStage; // Indica la fase actual
|
int currentStage; // Indica la fase actual
|
||||||
int stageBitmapCounter; // Contador para el tiempo visible del texto de Stage
|
int stageBitmapCounter; // 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 stageBitmapPath[STAGE_COUNTER]; // Vector con los puntos Y por donde se desplaza el texto
|
||||||
|
|||||||
@@ -2,40 +2,8 @@
|
|||||||
|
|
||||||
Código fuente creado por JailDesigner (2020)
|
Código fuente creado por JailDesigner (2020)
|
||||||
Empezado en Castalla el 15/07/2020.
|
Empezado en Castalla el 15/07/2020.
|
||||||
|
|
||||||
Descripción del enfoque utilizado para crear el juego.
|
|
||||||
|
|
||||||
El programa contine una serie de clases/objetos básicos: la clase sprite
|
|
||||||
permite dibujar partes de un fichero png en pantalla. La clase AnimatedSprite
|
|
||||||
contiene funcionalidad adicional para crear animaciones. La clase text permite
|
|
||||||
dibujar letras de un png en pantalla a partir de una cadena de texto. La clase
|
|
||||||
menu permite crear una estructura con diferentes elementos, escribirlos en
|
|
||||||
pantalla y seleccionar uno de ellos.
|
|
||||||
|
|
||||||
A continuación tenemos las clases enfocadas a la lógica del juego, la clase player
|
|
||||||
contiene la información del jugador, la clase balloon la de los enemigos y la
|
|
||||||
clase bullet para las balas que dispara el jugador. La clase background es
|
|
||||||
muy simple y sirve para pintar el fondo de la pantalla. Por ultimo, la clase
|
|
||||||
mDirector es la que realiza toda la lógica y se encarga de hacer interactuar
|
|
||||||
al resto de objetos entre si.
|
|
||||||
|
|
||||||
El objeto mDirector tiene tres estados: titulo, juego y pausa. Segun su estado
|
|
||||||
el bucle que recorre es distinto. En el bucle juego, el objeto mDirector
|
|
||||||
tiene un objeto jugador, un vector con los objetos globo y un vector con los
|
|
||||||
objetos bala. Se encarga de comprobar las entradas de teclado o gamepad para
|
|
||||||
cerrar la aplicacion, saltar al estado de pausa y para mover al jugador. Recorre
|
|
||||||
el vector de globos y de balas y si tienen algun tipo asignado las gestiona.
|
|
||||||
Comprueba las colisiones entre los globos y el jugador y entre las balas y los
|
|
||||||
globos. Tiene ademas un nivel de amenaza que calcula en funcion del número de globos
|
|
||||||
en pantalla y que se va incrementando conforme aumenta la puntuación del jugador.
|
|
||||||
|
|
||||||
Los objetos globo tienen varios contadores para alternar de un estado a otro.
|
|
||||||
|
|
||||||
En los vectores que contienen objetos, se considera activos los objetos que tienen
|
|
||||||
un tipo asociado diferente a NO_KIND
|
|
||||||
|
|
||||||
*** TODO ESTO ya no es valido, pero lo dejo como referencia
|
|
||||||
Reescribiendo el código el 27/09/2022
|
Reescribiendo el código el 27/09/2022
|
||||||
|
Actualizando a la versión "Arcade Edition" en 08/05/2024
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ void Scoreboard::fillPanelTextures()
|
|||||||
|
|
||||||
// HI-SCORE
|
// HI-SCORE
|
||||||
textScoreBoard->writeCentered(slot4_3.x, slot4_3.y, lang->getText(56));
|
textScoreBoard->writeCentered(slot4_3.x, slot4_3.y, lang->getText(56));
|
||||||
textScoreBoard->writeCentered(slot4_4.x, slot4_4.y, hiScoreName + updateScoreText(hiScore));
|
textScoreBoard->writeCentered(slot4_4.x, slot4_4.y, hiScoreName + " - " +updateScoreText(hiScore));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCOREBOARD_MODE_CONTINUE:
|
case SCOREBOARD_MODE_CONTINUE:
|
||||||
|
|||||||
Reference in New Issue
Block a user