61 lines
2.3 KiB
C++
61 lines
2.3 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
|
|
*/
|
|
|
|
#include "director.h"
|
|
#include <stdio.h>
|
|
#include <string>
|
|
|
|
int main(int argc, char *args[])
|
|
{
|
|
// Inicia el generador de numeros aleatorios
|
|
std::srand(static_cast<unsigned int>(SDL_GetTicks()));
|
|
|
|
printf("Starting the game...\n\n");
|
|
|
|
// Crea el objeto Director
|
|
Director *mDirector = new Director(args[0]);
|
|
|
|
// Bucle principal
|
|
mDirector->run();
|
|
|
|
// Destruye el objeto Director
|
|
delete mDirector;
|
|
mDirector = nullptr;
|
|
printf("\nShutting down the game...\n");
|
|
|
|
return 0;
|
|
}
|