Tabla de contenido:
- Paso 1: obtenga todas las piezas
- Paso 2: La pantalla táctil a color de 2.8 "para Arduino
- Paso 3: Construir el proyecto y probarlo
- Paso 4: el algoritmo del juego
- Paso 5: Código del proyecto
- Paso 6: Reflexiones finales y mejoras
Video: Juego Arduino Touch Tic Tac Toe: 6 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Queridos amigos, ¡bienvenidos a otro tutorial de Arduino! En este tutorial detallado vamos a construir un juego Arduino Tic Tac Toe. Como puede ver, estamos usando una pantalla táctil y estamos jugando contra la computadora. Un juego simple como Tic Tac Toe es una gran introducción a la programación de juegos y la Inteligencia Artificial. Aunque no usaremos ningún algoritmo de inteligencia artificial en este juego, entenderemos por qué se requieren algoritmos de inteligencia artificial en juegos más complejos.
Desarrollar juegos para Arduino no es fácil y requiere mucho tiempo. Pero podemos construir algunos juegos simples para Arduino porque es divertido y nos permitirá explorar algunos temas de programación más avanzados, como la inteligencia artificial. ¡Es una gran experiencia de aprendizaje y al final tendrás un buen juego para los niños!
Construyamos ahora este proyecto.
Paso 1: obtenga todas las piezas
Las piezas necesarias para construir este proyecto son las siguientes:
Un Arduino Uno ▶
Una pantalla táctil de 2.8”▶
El costo del proyecto es muy bajo. Son solo 15 $
Antes de intentar construir este proyecto, mire el video que he preparado sobre la pantalla táctil. Lo he adjuntado en este instructivo. Le ayudará a comprender el código y calibrar la pantalla táctil.
Paso 2: La pantalla táctil a color de 2.8 "para Arduino
Descubrí esta pantalla táctil en banggood.com y decidí comprarla para intentar usarla en algunos de mis proyectos. Como puede ver, la pantalla es económica, cuesta alrededor de $ 11.
Consíguelo aquí ▶
La pantalla ofrece una resolución de 320x240 píxeles y viene como un escudo que hace que la conexión con Arduino sea extremadamente fácil. Como puede ver, la pantalla usa casi todos los pines digitales y analógicos del Arduino Uno. Al usar este escudo nos quedamos con solo 2 pines digitales y 1 pin analógico para nuestros proyectos. Afortunadamente, la pantalla también funciona bien con el Arduino Mega, por lo que cuando necesitemos más pines, podemos usar el Arduino Mega en lugar del Arduino Uno. Desafortunadamente, esta pantalla no funciona con Arduino Due o la placa Wemos D1 ESP8266. Otra ventaja del escudo es que ofrece una ranura micro SD que es muy fácil de usar.
Paso 3: Construir el proyecto y probarlo
Luego de conectar la pantalla al Arduino Uno, podemos cargar el código y estamos listos para jugar.
Al principio, presionamos el botón "Iniciar juego" y el juego comienza. El Arduino juega primero. Entonces podemos jugar nuestro movimiento simplemente tocando la pantalla. El Arduino luego juega su movimiento y así sucesivamente. El jugador que logra colocar tres de sus marcas en una fila horizontal, vertical o diagonal gana el juego. Cuando termina el juego, aparece la pantalla Game Over. Luego podemos presionar el botón de volver a jugar para comenzar el juego nuevamente.
El Arduino es muy bueno en este juego. Ganará la mayoría de los juegos, o si eres un muy buen jugador, el juego terminará en empate. Diseñé intencionalmente este algoritmo para cometer algunos errores con el fin de darle al jugador humano la oportunidad de ganar. Añadiendo dos líneas más al código del juego, podemos hacer imposible que Arduino pierda el juego. Pero, ¿cómo puede un chip de 2 $, la CPU Arduino, vencer al cerebro humano? ¿El programa que desarrollamos es más inteligente que el cerebro humano?
Paso 4: el algoritmo del juego
Para responder a esta pregunta, veamos el algoritmo que he implementado.
La computadora siempre juega primero. Esta decisión por sí sola hace que el juego sea mucho más fácil de ganar para Arduino. El primer movimiento es siempre una esquina. El segundo movimiento para Arduino es también una esquina aleatoria del resto sin preocuparse en absoluto por el movimiento del jugador. A partir de este punto, Arduino primero verifica si el jugador puede ganar en el siguiente movimiento y bloquea ese movimiento. Si el jugador no puede ganar en un solo movimiento, realiza un movimiento de esquina si está disponible o uno aleatorio del resto. Eso es todo, este simple algoritmo puede vencer al jugador humano cada vez o, en el peor de los casos, el juego resultará en un empate. Este no es el mejor algoritmo de juego de tic tac toe, pero sí uno de los más simples.
Este algoritmo se puede implementar en Arduino fácilmente, porque el juego Tic Tac Toe es muy simple, y podemos analizarlo y resolverlo fácilmente. Si diseñamos el árbol del juego, podemos descubrir algunas estrategias ganadoras e implementarlas fácilmente en el código o podemos dejar que la CPU calcule el árbol del juego en tiempo real y elija la mejor jugada por sí misma. Por supuesto, el algoritmo que usamos en este juego es muy simple, porque el juego es muy simple. Si intentamos diseñar un algoritmo ganador para el ajedrez, incluso si usamos la computadora más rápida, ¡no podremos calcular el árbol del juego en mil años! Para juegos como este, necesitamos otro enfoque, necesitamos algunos algoritmos de Inteligencia Artificial y, por supuesto, una gran potencia de procesamiento. Más sobre esto en un futuro video.
Paso 5: Código del proyecto
Echemos un vistazo rápido al código del proyecto. Necesitamos tres bibliotecas para compilar el código.
- Adafruit TFTLCD:
- Adafruit GFX:
- Pantalla táctil:
Como puede ver, incluso un juego simple como este, requiere más de 600 líneas de código. El código es complejo, por lo que no intentaré explicarlo en un breve tutorial. Sin embargo, te mostraré la implementación del algoritmo para los movimientos de Arduino.
Al principio, jugamos dos esquinas al azar.
<int firstMoves = {0, 2, 6, 8}; // usará estas posiciones primero para (contador = 0; contador <4; contador ++) // Contar los primeros movimientos jugados {if (tablero [firstMoves [contador]! = 0) // El primer movimiento lo juega alguien {movePlayed ++; }} hacer {si (se mueve <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (tablero [c] == 0) {retraso (1000); tablero [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
A continuación, en cada ronda comprobamos si el jugador puede ganar en el siguiente movimiento.
int checkOpponent ()
{if (tablero [0] == 1 && tablero [1] == 1 && tablero [2] == 0) return 2; else if (tablero [0] == 1 && tablero [1] == 0 && tablero [2] == 1) return 1; else if (tablero [1] == 1 && tablero [2] == 1 && tablero [0] == 0) return 0; else if (tablero [3] == 1 && tablero [4] == 1 && tablero [5] == 0) return 5; else if (tablero [4] == 1 && tablero [5] == 1 && tablero [3] == 0) return 3; más si (tablero [3] == 1 && tablero [4] == 0 && tablero [5] == 1) return 4; else if (tablero [1] == 0 && tablero [4] == 1 && tablero [7] == 1) return 1; si no, devuelve 100; }
Si es así, bloqueamos ese movimiento, la mayoría de las veces. No bloqueamos todos los movimientos para darle al jugador humano la oportunidad de ganar. ¿Puedes encontrar qué movimientos no están bloqueados? Después de bloquear el movimiento, jugamos una esquina restante o un movimiento aleatorio. Puede estudiar el código e implementar su propio algoritmo inmejorable fácilmente. Como siempre, puede encontrar el código del proyecto adjunto en este instructivo.
NOTA: Dado que Banggood ofrece la misma pantalla con dos controladores de pantalla diferentes, si el código anterior no funciona, cambie la función initDisplay a lo siguiente:
vacío initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Paso 6: Reflexiones finales y mejoras
Como puede ver, incluso con un Arduino Uno, podemos construir un algoritmo inmejorable para juegos simples. Este proyecto es genial, porque es fácil de construir y, al mismo tiempo, es una gran introducción a la inteligencia artificial y la programación de juegos. Intentaré construir algunos proyectos más avanzados con Inteligencia Artificial en el futuro usando la Raspberry Pi más poderosa, ¡así que estad atentos! Me encantaría conocer tu opinión sobre este proyecto.
Por favor, publique sus comentarios a continuación y no olvide dar me gusta al instructivo si lo encuentra interesante. ¡Gracias!
Recomendado:
Juego Python Tic Tac Toe: 4 pasos
Python Tic Tac Toe Game: Python Tic Tac Toe Game Este juego está hecho en Python, que es un lenguaje de computadora. He usado un editor de Python llamado: Pycharm. También puede usar el editor de código Python normal
Juego Microbit Tic Tac Toe: 4 pasos (con imágenes)
Microbit Tic Tac Toe Game: para este proyecto, mi compañero de trabajo, @descartez, y yo creamos un increíble juego de tic tac toe utilizando la funcionalidad de radio de microbits. Si no ha oído hablar antes de los microbits, son un microcontrolador increíble diseñado para enseñar programación a los niños. Ellos
Juego 3D4x: Tic-Tac-Toe 3D 4x4x4: 5 pasos (con imágenes)
3D4x Juego: 3D 4x4x4 Tic-Tac-Toe: ¿Estás cansado de jugar al mismo tic-tac-toe, viejo, aburrido y bidimensional? ¡Pues tenemos la solución para ti! Tic-tac-toe en 3 dimensiones !!! Para 2 jugadores, en este cubo 4x4x4, obtenga 4 LED seguidos (en cualquier dirección) y ¡gana! Tú lo haces. Tu pla
Cómo hacer un juego de Tic Tac Toe usando Swift con Xcode: 5 pasos
Cómo hacer un juego Tic Tac Toe usando Swift con Xcode: En este tutorial de Swift, te mostraré cómo crear una aplicación Tic Tac Toe. Esta aplicación es extremadamente simple y es un gran proyecto para cualquier principiante. Dividiré el tutorial en tres pasos: 1. Creando los objetos 2. Vincular objetos al código 3. La C
Juego interactivo Tic-Tac Toe controlado con Arduino: 6 pasos
Juego interactivo Tic-Tac Toe controlado con Arduino: El objetivo del proyecto Physical Tic-Tac-Toe es mover un juego conocido al ámbito físico. Originalmente, el juego lo jugaban dos jugadores en una hoja de papel, colocando los símbolos "X" y "O" por turnos. Nuestra idea era examinar el comportamiento de los jugadores