Skip to content

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ón setup() 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ón loop() 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ón loop() 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.