Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un Tres en Raya (Tic-Tac-Toe) Táctil en Arduino Due

Componentes y Suministros

Arduino Due×1
Pantalla TFT 2,8" ILI9341 con pantalla táctil resistiva×1
Cables jumpers×1

Aplicaciones y Servicios Online

Sobre el Proyecto

Implementación del clásico Tres en Raya (Tic-Tac-Toe) en pantalla táctil 2,8" ILI9341 controlada por Arduino Due. Incluye dos versiones de IA: una básica y otra invencible basada en algoritmo Minimax. Requiere librerías Adafruit_GFX, Adafruit_ILI9341 y URTouch.

Cableado

Pantalla Táctil (URTouch) → Arduino Due

Pantalla TFT (SPI) → Arduino Due

Nota: El Arduino Due trabaja a 3,3 V; no alimentes la pantalla a 5 V.

Evolución del Código

Código

Versión 1 – IA Básica (Estrategia Heurística)

Comprueba líneas de dos fichas propias para ganar, bloquea al rival, ocupa centro, esquinas y finally aleatorio. Incluye bitmaps PROGMEM para X (azul) y O (rojo) de 65×65 px.

// Incluye librerías, define pines, bitmaps PROGMEM...
void setup() {
  myTouch.InitTouch(); myTouch.setPrecision(PREC_HI);
  tft.begin(); tft.setRotation(3);
  // Pantalla de inicio, botón "Gamestart", selección quién empieza...
}
void loop() {
  // Bucle principal: alterna playerMove() / arduinoMove()
  // checkWinner() detecta 3 en raya y dibuja línea ganadora.
  // Fin de partida: muestra resultado y botón "Again?".
}
// Funciones: playerMove(), arduinoMove(), checkOpponent(), checkWinner(),
// drawX(), drawCircle(), waitonetouch()...

Versión 2 – IA Invencible (Minimax)

Implementa Minimax con poda de profundidad configurable (difficulty). La CPU nunca pierde; lo mejor es empate. Código más limpio, usa win(board) para evaluar tablero y minimax(board, player, depth) para elegir jugada óptima.

int minimax(int board[9], int player, int depth) {
  int winner = win(board);
  if (winner != 0) return winner * player;
  int bestScore = -2, move = -1;
  for (int i=0; i<9; ++i) if (board[i]==0) {
    board[i] = player;
    int score = (depth<difficulty) ? -minimax(board, -player, depth+1) : 0;
    board[i] = 0;
    if (score > bestScore) { bestScore = score; move = i; }
  }
  return (move==-1) ? 0 : bestScore;
}
void computerMove(int board[9]) {
  int bestScore=-2, move=-1;
  for(int i=0;i<9;++i) if(board[i]==0){
    board[i]=1;
    int s=-minimax(board,-1,0);
    board[i]=0;
    if(s>bestScore){bestScore=s; move=i;}
  }
  board[move]=1; drawCpuMove(move); delay(100);
}

Esquemático

Construye un Tres en Raya (Tic-Tac-Toe) Táctil en Arduino Due

Proceso de manufactura

  1. Tarjeta de visita PCB 4×4 Tic Tac Toe personalizada – Guía de diseño, construcción y código
  2. Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
  3. Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
  4. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  5. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  6. Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
  7. Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
  8. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
  9. Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet
  10. Sistema Radar Compacto con Arduino Nano, Sensor HC-SR04 y Pantalla 1.8"
  11. Genera Tonos Musicales con Arduino: Guía Paso a Paso