63 lines
2.4 KiB
C++
63 lines
2.4 KiB
C++
/*
|
|
|
|
Código fuente creado por JailDesigner (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 numero 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
|
|
|
|
*/
|
|
|
|
#include <iostream> // for char_traits, basic_ostream, operator<<, endl
|
|
#include "director.h" // for Director
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
std::cout << "Starting the game..." << std::endl
|
|
<< std::endl;
|
|
|
|
// Crea el objeto Director
|
|
Director *director = new Director(argc, argv);
|
|
|
|
// Bucle principal
|
|
director->run();
|
|
|
|
// Destruye el objeto Director
|
|
delete director;
|
|
|
|
std::cout << "\nShutting down the game..." << std::endl;
|
|
|
|
return 0;
|
|
}
|