Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
Estoy contento de anunciar que al fin he terminado el videojuego que comencé hace casi un mes. Se trata del juego de la serpiente, viborita, snake o como lo conozcas; pero en Arduino usando una LCD.
Antes que nada te invito a ver la primera parte en donde todavía no terminaba el proyecto, el cual pausé porque no tenía los componentes necesarios, pero recientemente llegó mi pedido y pude terminar el proyecto.
Vamos a usar cosas simples, pero si eres un principiante te recomiendo leer los enlaces que dejo a continuación. Para empezar, vamos a generar números aleatorios con Arduino; esto servirá para colocar la comida de manera aleatoria.
En segundo lugar vamos a usar un Joystick conectado al Arduino.
Es como combinar el circuito de LCD I2C con Arduino y Arduino con Joystick. Aquí está:
Hay que notar que no he conectado el botón del joystick, pues por ahora no tiene ningún uso.
Nota: he usado un Arduino MEGA pero en un UNO debería funcionar como un encanto.
Como lo dije, una de las mejoras o actualizaciones es que se coloca comida de manera aleatoria en el escenario.
Para dibujar la comida tenemos dos funciones; una de ella calcula las coordenadas y la otra la coloca sobre el escenario:
Le damos seguimiento a la posición de la comida y calculamos si la serpiente colisiona con la misma, es decir, sabemos si la serpiente come, valga la redundancia, comida (podemos imaginar que la serpiente es una anaconda y la comida es un ratón).
De igual modo ahora el puntaje se aumenta de manera correcta.
También tenemos una función que lee un joystick y devuelve la dirección hacia la que se debe dirigir la serpiente:
Me di cuenta de que no era necesario invocar al método clear
de la pantalla, pues en cada momento se estaba dibujando el nuevo valor; eso redujo que la pantalla parpadee y sea desagradable a la vista.
Finalmente dejaré la prueba de que todo funciona. Primero, el código:
Aquí la demostración de mí jugando:
Lo tengo de igual modo en vídeo:
Por cierto, mi mayor puntaje creo que fue 169:
PD: lo sé, mi pantalla está oxidada, le tendré más cuidado.
Dejo el enlace a mi repositorio de GitHub en donde actualizaré el código si lo hago algún día; pero por ahora estoy muy satisfecho con el resultado. No olvides leer la primera parte, pues explico detalles importantes.
De hecho nadie solicitó este juego y no fue un requisito de ningún modo, simplemente fue un capricho. Lo intenté hacer hace algún largo tiempo y no pude, pero al intentarlo de nuevo, lo logré y quedó estupendo.
Si quieres puedes leer más sobre Arduino o Electrónica en mi blog.
Buenas tardes, queria consultar que libreria estan utilizando ya que liquidCrystal.h de arduino no me toma el programa
Creo que es LiquidCrystal_I2C
hay un error, no sé a que se refiera, ya pude la dirección LCD, y las librerías y me dice esto:
es un texto más grande pero se va repitiendo esto varias veces
In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:32:0,
from sketch\Proyecto.ino.cpp:1:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/binary.h:58:0: note: this is the location of the previous definition
#define B00000100 4
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/binary.h:58:19: error: expected ‘,’ or ‘…’ before numeric constant
#define B00000100 4
^
C:\Users\Pedro\OneDrive\Documentos\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:51:12: note: in expansion of macro ‘B00000100’
#define En B00000100 // Enable bit
^~~~~~~~~
Hola. Solo atiendo consultas en https://parzibyte.me/#contacto
Saludos!