10. Modelación de un Videojuego. BALLOON ATTACK. El planeta está siendo invadido por extraños...
-
Upload
drina-rochel -
Category
Documents
-
view
7 -
download
0
Transcript of 10. Modelación de un Videojuego. BALLOON ATTACK. El planeta está siendo invadido por extraños...
10. Modelación de un Videojuego.BALLOON ATTACK
El planeta está siendo invadido por extraños extraterrestres en forma de globos, y ningún arma existente en este planeta puede matarlos, excepto la tuya, por ello debes derrotar a los malvados invasores, y que ninguno de ellos aterrice en La Tierra.
BALOON FIGHT
Debemos identificar cada objeto del mundo y crear una clase para ellos.
A simple vista las clases que interfieren en el videojuego son:◦ Globo◦ Bala◦ Protagonista
Además de una clase WorldManager que será la encargada del ciclo del videojuego.
Debemos identificar las acciones principales de cada objeto y crear un método para cada una de esas acciones.
Además cada clase tendrá un método FrameGame(), que se encargará de la lógica del objeto en un determinado frame.
Debemos identificar los atributos de cada objeto del videojuego, además del tipo de dato de cada atributo, y si ésta es constante o variable.
Finalmente, debemos identificar los parámetros que aceptará el constructor para inicializar todas sus variables.
Definición Clase Globo
Definición Clase Jugador
Definición Clase Jugador
Definición Clase Bala
El manejo de estado se realiza para los estados del videojuego mismo (pause, menú, loop principal) y estados de cada uno de los personajes del videojuego, tanto de IA en enemigos como de movimientos en el protagonista.
Los estados se manejan con enumeraciones: Enum.
En este caso sólo el personaje tiene estados, y estos son para determinar el tipo de movimiento.
Cada movimiento debe estar en la enumeración:
El estado actual debe estar guardado en una variable global:
Estados del Jugador
Cuando el usuario desee mover al jugador se asignará a éste:
Si el usuario detiene al jugador, éste se detendrá según la tecla soltada:
Estados del Jugador
Debemos identificar el input del usuario y asignarlo a cada acción del personaje o a acciones que pueda realizar éste en el mundo.
En este caso debemos asignar las teclas del teclado a las acciones del personaje.
Mover el personaje o disparar al presionar una tecla y detener al personaje si se suelta la tecla.
Mover (detener) a la izquierda:◦ Tecla A y LEFT.
Mover (detener) a la derecha:◦ Tecla D y RIGHT.
Disparar:◦ Tecla SPACE.
Input: Evento al presionar una tecla
Input: Evento al soltar una tecla
Muchos objetos pueden tener distintos “tipos” que los representen.
Por ejemplo de una clase enemigo pueden hacerse varios tipos de éste, con distintos atributos y comportamientos.
En este caso habrá 2 tipos de globos: Rojos y Verdes. Los primeros son más rápidos, tienen menor probabilidad de aparición y si son muertos entregan mayor puntaje.
Cada tipo, debe estar indicado en la enumeración:
El tipo debe estar guardado en una variable global:
Tipos de globos
En el constructor, según el tipo dado como parámetro se creara un globo con características Rojo o Verde:
Tipos de globos
Se debe implementar un contenedor para cada conjunto de objetos que se quiera manejar: mover, detectar colisiones, etc.
En este caso se necesita una lista para contener a los globos y otra para las balas que dispara el personaje.
En WorldManager:
En Jugador:
Contenedores
Loop del videojuegoLoop del videojuego
Aquí debemos implementar toda la lógica del videojuego: movimientos, colisiones entre elementos, etc.
Lo primero es mover al personaje
Loop del videojuegoLoop del videojuego
Lo segundo es calcular cual será la condición para crear un nuevo globo:
Mostraremos sólo 5 globos en pantalla.
La probabilidad de que una bala se inserte es 5 / 50. Y como un globo rojo tiene menor probabilidad de aparición, éste tendrá probabilidad de 1 / 50 y el verde 4 / 50.
Loop del videojuegoLoop del videojuego
Loop del videojuegoLoop del videojuego
Lo tercero es mover las balas y los globos.
Las balas las movemos dentro del método FrameGame del jugador.
Loop del videojuegoLoop del videojuego
Loop del videojuegoLoop del videojuego Además debemos checkear si es que las balas o los
globos han atravesado la pantalla, si es así los eliminamos.
Para ello la posición Y del sprite de los globos debe ser mayor que la altura de la ventana.
Y la posición Y del sprite de la bala debe ser menor que 0.
Loop del videojuegoLoop del videojuego
Loop del videojuegoLoop del videojuego
Loop del videojuegoLoop del videojuego
Finalmente debemos determinar si hubo colisiones entre la bala y el globo, para esto iteramos entre ambas listas.
Además si hubo una colisión agregamos el valor del globo al puntaje del jugador.
Loop del videojuegoLoop del videojuego
BALLOON ATTACK