Tabla de contenido:

Versión del juego Arduino Space Race _1: 5 pasos
Versión del juego Arduino Space Race _1: 5 pasos

Video: Versión del juego Arduino Space Race _1: 5 pasos

Video: Versión del juego Arduino Space Race _1: 5 pasos
Video: mi sobrino siempre a querido una silla gamer #setup #humor 2024, Noviembre
Anonim
Image
Image

Hola amigos. Hoy te voy a mostrar cómo puedes hacer un juego de carrera espacial con una pantalla LCD5110 y un joystick. Veamos los pasos …

Paso 1: NECESIDADES

ESQUEMA
ESQUEMA

Aquí hay una lista de partes que utilicé para hacer este proyecto:

  • Arduino UNO
  • Módulo de joystick
  • Cables de puente (macho a macho y macho a hembra)
  • Tablero de circuitos

Paso 2: ESQUEMA

VCC -> Arduino 5V

BL -> Pin 3 de Arduino

GND -> Arduino GND

CLK (SCLK) -> Pin 8 de Arduino

DIN (MOSI) -> Pin 9 de Arduino

DC -> Pin 10 de Arduino

CE o CS -> Pin 12 de Arduino

RST (RESET) -> Pin 11 de Arduino

Paso 3: CÓDIGO

CÓDIGO
CÓDIGO

El código tiene explicaciones de las funciones del código. Lo entenderá fácilmente. Si tienes algún problema, puedes contactarme.

#incluir

LCD5110 lcd (8, 9, 10, 11, 12); // (clk, din, dc, rst, ce)

int BL = 3;

extern uint8_t SmallFont ; // describe las fuentes extern uint8_t MediumNumbers ; extern uint8_t arac ; // describe nuestra forma extern uint8_t dusman_araci ; // describe la forma del enemigo const int xpin = A0; // joystick x pin char pozisyon = 2; // describe la ubicación, la ubicación de inicio de nuestra forma 2 boolean kontrol = true; booleano dusmanOldu = verdadero; int skor = 0; int hiz = 0; int dusmanKonumu1; // describe enemigo1 x ubicación int dusmanKonumu2; // describe enemigo2 x ubicación int dusmaninYdeKonumu; // describe la ubicación de los enemigos

void dusmanAraci (int yer, int asama) {// establecer ubicaciones para las formas enemigas

if (yer == 1) {// si ubicación = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // dibuja la forma del enemigo} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// si fallamos, el juego termina

while (1) {retraso (100); // espera 1 milisegundo lcd.clrScr (); // limpia la pantalla lcd.setFont (SmallFont); // establece la fuente lcd.print ("JUEGO TERMINADO", CENTRO, 20); // imprimir lcd.update (); // actualiza la pantalla}}

configuración vacía () {pinMode (BL, SALIDA); // establecer la salida de luz de fondo lcd. InitLCD (); // iniciar la pantalla lcd lcd.setContrast (55); // establecer contraste (de 0 a 127) Serial.begin (9600); // iniciar la comunicación en serie}

bucle vacío () {

escritura analógica (BL, 200);

// establecer la pantalla del juego lcd.drawRect (0, 0, 47, 47); // dibujamos el rectángulo lcd.setFont (SmallFont); // establece la fuente lcd.print ("skor", 53, 0); // printf score lcd.setFont (MediumNumbers); // establece la fuente lcd.printNumI (skor, 59, 7); // obtener la puntuación lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // velocidad de impresión lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // obtener velocidad lcd.update (); //actualizar

// establece la ubicación del joyistick int x = analogRead (xpin); if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x state> 600 y el control es verdadero pozisyon ++; // aumentar la ubicación significa mover la forma a la derecha kontrol = false; } más si (x> 300 && x <600) {kontrol = verdadero; } Serial.println (x); // para aprender el estado x // establecer la ubicación de nuestra forma lcd.clrScr (); // limpia la pantalla if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // dibujamos nuestro barco if (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

si (pozisyon == 3) {

lcd.drawBitmap (34, 37, arac, 12, 8);}

if (dusmanOldu) {// si la forma del enemigo está muerta, comprobar si están muertos

dusmanKonumu1 = pozisyon; // dibuja la primera forma enemiga dusmanKonumu2 = random (0, 4); // dibuja otra forma enemiga en algún lugar dusmaninYdeKonumu = 0; // traer al enemigo desde arriba dusmanOldu = false;} // el enemigo es recreado para que no esté muerto dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // dibuja la primera forma del enemigo y obténla de arriba a abajo dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // dibuja la segunda forma enemiga y obténla de arriba a abajo if (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// si nuestra forma toca las formas enemigas oyunBitti ();} // el juego termina if (dusmaninYdeKonumu> 40) {// si nuestra forma escapa de los enemigos dusmanOldu = true; // matar formas enemigas skor ++;} // aumentar una a una la puntuación // aumentar la velocidad según la puntuación if (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; retraso (40); }}

Paso 4: CODIGO BITMAP

Además, debe incluir el gráfico de mapa de bits para las formas. Debe ser un archivo.c y el mismo nombre con el nombre del código. Además, debe estar en el mismo archivo.

// ------------------------------------------------ ------------------------------ // Archivo generado por LCD Assistant // https://en.radzio.dxp.pl / bitmap_converter / // --------------------------------------------- --------------------------------- #include // incluir para la función progmem

const unsigned char arac PROGMEM = {// nuestro mapa de bits de forma

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

const unsigned char dusman_araci PROGMEM = {// mapa de bits de la nave enemiga

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

Paso 5: GRACIAS POR VER

GRACIAS POR VER
GRACIAS POR VER

Antes de comenzar a compartir mis proyectos, codifiqué en palabras turcas para que no pudiera cambiar todas las palabras al inglés. Aquí la traducción de las palabras que uso este proyecto, Oyun = Juego

Arac = Forma

Dusman = enemigo

kontrol = control

Konum, Yer = Ubicación

Oyun Bitti = Fin del juego

Skor = Puntuación

Hiz = Velocidad

Recomendado: