52 lines
2.2 KiB
C++
52 lines
2.2 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 <memory>
|
|
#include "director.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
// Crea el objeto Director
|
|
auto director = std::make_unique<Director>(argc, const_cast<const char **>(argv));
|
|
|
|
// Bucle principal
|
|
return director->run();
|
|
} |