El juego perrón

 

La pantalla muestra un personaje que se mueve, mientras el jugador intenta esquivar obstáculos presionando un botón conectado al pin 7. Aquí te explico cada parte importante:


Importación de la librería y configuración inicial

#include <LiquidCrystal.h>  // Incluye la librería para controlar una pantalla LCD


LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Configura los pines para la pantalla LCD

Aquí se configura la pantalla LCD usando la librería LiquidCrystal. Los números 12, 11, 5, 4, 3 y 2 indican los pines de Arduino a los que se conecta la pantalla.


Creación de Caracteres Personalizados


byte letra1[8] = { B01110, B00100, B11111, B01110, B01010, B01010, B11111, B01010 };

// ...

Se definen varios caracteres personalizados ( letra1, letra2, etc.), cada uno de los cuales usa una matriz de 8 bytes para crear formas en la pantalla. Esto permite mostrar gráficos personalizados, como el personaje y los obstáculos.


Variables globales

int x = 15;

int y = 1;

int obstaculos = 0;

int vel = 300;

int puntaje = 0;

int GameOver = 3;

Estas variables controlan el movimiento del personaje ( xy y), la cantidad de obstáculos superados ( obstaculos), la velocidad de juego ( vel), el puntaje ( puntaje), y la posición del personaje para el fin del juego ( GameOver).


Funciónsetup()

void setup() {

  lcd.begin(16, 2);  // Configura la pantalla con 16 columnas y 2 filas

  lcd.createChar(1, letra1);  // Carga caracteres personalizados

  // ...

}

Se configura la pantalla y se cargan los caracteres personalizados en el LCD.


Ciclo loop()(Juego Principal)

void loop() {

  lcd.setCursor(7, 0);  

  lcd.print("CISCOPEKE");  // Muestra el nombre en la pantalla


  lcd.setCursor(0, 0);  

  lcd.print(obstaculos);  // Muestra el número de obstáculos superados


  lcd.setCursor(x, y);  

  lcd.write(byte(3));  // Dibuja el obstáculo en la posición (x, y)

  delay(vel);


  lcd.setCursor(x, y);

  lcd.write(byte(4));

  delay(vel);


  lcd.setCursor(x, y);

  lcd.write(byte(5));

  delay(vel);


  lcd.clear();


  lcd.setCursor(GameOver, 1);  

  lcd.setCursor(3, 1);

  lcd.write(byte(1));  // Dibuja el personaje

Esta sección despliega en la pantalla el nombre del canal ("CISCOPEKE") y los obstáculos superados. Después, se mueve un obstáculo a través de la pantalla, cambiando de posición en cada ciclo.


Detección de Obstáculos

  if (digitalRead(7) == HIGH) {  // Detecta si el botón está presionado

    lcd.setCursor(3, 1);

    lcd.write(byte(0));  

    lcd.setCursor(3, 0);

    lcd.write(byte(2));  // Cambia el personaje de posición para esquivar el obstáculo

  }

  else if (3 == x) {  // Si el personaje no esquiva el obstáculo

    lcd.clear();

    lcd.setCursor(3, 0);

    lcd.print("Game Over");

    lcd.setCursor(7, 1);

    lcd.write(byte(6));  // Muestra el mensaje de "Game Over"

    delay(3000);

    puntaje = obstaculos;  // Guarda el puntaje

    lcd.setCursor(3, 1);

    lcd.print("Puntaje:");

    lcd.setCursor(12, 1);

    lcd.print(puntaje);

    delay(6000);

    obstaculos = 0;  // Reinicia el puntaje y los obstáculos

  }

Si se presiona el botón en el pin 7, el personaje se mueve para evitar el obstáculo. Si no lo evita (cuando xes 3), se muestra "Game Over" y el puntaje. Luego, se reinician los contadores para empezar un nuevo juego.


Movimiento de Obstáculos y Velocidad

  x = x - 1;  // Mueve el obstáculo hacia la izquierda

  if (x <= 0) {  // Cuando llega al borde izquierdo

    x = 15;  // Resetea la posición del obstáculo a la derecha

  }


  vel = random(1, 200);  // Cambia la velocidad de forma aleatoria


  if (GameOver == x) {  // Si se supera el obstáculo

    lcd.clear();

    obstaculos++;  // Incrementa el contador de obstáculos superados

  }

}

Finalmente, el obstáculo se mueve y la velocidad cambia de manera aleatoria. Si el jugador evita el obstáculo (la variable GameOvercoincide con la posición del obstáculo x), se incrementa el contador obstaculos.


Resumen

El juego consiste en evitar obstáculos que se mueven de derecha a izquierda en la pantalla. El jugador debe presionar un botón para mover al personaje y esquivar el obstáculo.




No hay comentarios:

Publicar un comentario