Tabla de contenido:

Juego Arduino Touch Tic Tac Toe: 6 pasos (con imágenes)
Juego Arduino Touch Tic Tac Toe: 6 pasos (con imágenes)

Video: Juego Arduino Touch Tic Tac Toe: 6 pasos (con imágenes)

Video: Juego Arduino Touch Tic Tac Toe: 6 pasos (con imágenes)
Video: TIC-TAC-TOE ❌⭕️ Football ⚽️2 #football #footballshorts 2024, Junio
Anonim
Image
Image
Arduino Touch Tic Tac Toe Juego
Arduino Touch Tic Tac Toe Juego
Arduino Touch Tic Tac Toe Juego
Arduino Touch Tic Tac Toe Juego
Arduino Touch Tic Tac Toe Juego
Arduino Touch Tic Tac Toe Juego

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

Image
Image
El 2.8
El 2.8

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

Image
Image
El 2.8
El 2.8
El 2.8
El 2.8

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

Construyendo el proyecto y probándolo
Construyendo el proyecto y probándolo
Construyendo el proyecto y probándolo
Construyendo el proyecto y probándolo
Construyendo el proyecto y probándolo
Construyendo el proyecto y probándolo

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

El algoritmo del juego
El algoritmo del juego
El algoritmo del juego
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

Código del proyecto
Código del proyecto

Echemos un vistazo rápido al código del proyecto. Necesitamos tres bibliotecas para compilar el código.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. 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

Reflexiones finales y mejoras
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: