Estructura del Juego
Antes de continuar con la máquina de estados, vamos a definir tres funciones que nos permitirán manejar la lógica de cada estado del juego: init(), update() y draw(). Estas funciones se encargarán de inicializar el estado, actualizar la lógica del juego y dibujar los elementos en pantalla, respectivamente.
Cada función tiene el siguiente propósito:
-
init(): Esta función se encargará de inicializar el estado actual del juego, estableciendo las variables necesarias y preparando la pantalla para mostrar los elementos correspondientes a ese estado. Esta función es representada por la funciónsetup()en el código base del juego, donde se realiza la configuración inicial de la consola y se establecen las variables necesarias para el juego. -
update(): Esta función se encargará de actualizar la lógica del juego, comprobando las acciones del jugador y los eventos que ocurran durante la jugabilidad. Esta función es representada por la funciónloop()en el código base del juego, donde se comprueba si es el momento de actualizar la pantalla y se realiza la lógica correspondiente a cada estado del juego. -
draw(): Esta función se encargará de dibujar los elementos en pantalla, mostrando al jugador la información correspondiente a cada estado del juego. Esta función es representada por la funciónloop()en el código base del juego, donde se dibujan los elementos en pantalla y se muestra la información correspondiente a cada estado del juego.
Vamos a modificar el código base del juego para incluir estas funciones y utilizarlas en la máquina de estados. A continuación, se muestra un ejemplo de cómo se vería el código modificado:
#include <Arduboy2.h>
#define FRAMES 25
void Update();
void Draw();
void setup() {
arduboy.begin();
arduboy.setFrameRate(FRAMES);
currentState = INIT;
}
void loop() {
if (!(arduboy.nextFrame())) return;
Update();
arduboy.clear();
Draw();
arduboy.display();
}
Al modificar el código base del juego, ahora es más fácil de entender y mantener, ya que hemos separado la lógica de cada estado del juego en funciones específicas. Esto nos permitirá agregar nuevos estados y funcionalidades al juego de manera más sencilla y organizada.