Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Tic-Tac-Toe Spiel auf Touchscreen bauen: Schritt-für-Schritt-Anleitung

Benötigte Komponenten

Arduino UNO 1 Stück
2,8" Touchscreen (Shield, 320x240 Pixel) 1 Stück

Software & Online-Dienste

Projektübersicht

In diesem Tutorial bauen wir ein Tic-Tac-Toe-Spiel mit einem Arduino UNO und einem 2,8-Zoll-Touchscreen. Der Arduino spielt gegen den menschlichen Spieler. Obwohl das Spiel einfach ist, eignet es sich hervorragend als Einführung in Spielprogrammierung und künstliche Intelligenz. Wir verwenden keine komplexen KI-Algorithmen, aber der Algorithmus zeigt, warum diese bei komplexeren Spielen notwendig sind.

Die Entwicklung von Spielen für Arduino ist zeitaufwendig, aber einfache Projekte wie dieses machen Spaß und vermitteln fortgeschrittene Programmierkonzepte. Am Ende haben Sie ein funktionierendes Spiel für Kinder – und haben viel gelernt.

Schritt 1: Alle Teile besorgen

Benötigte Hardware:

Gesamtkosten: ca. 15 $.

Tipp: Schauen Sie sich vor dem Bau das Video zur Kalibrierung des Touchscreens an – es erleichtert das Verständnis des Codes erheblich.

Schritt 2: Der 2,8" Touch-Farbbildschirm

Das Display kostet ca. 11 $ (z. B. bei Banggood). Es bietet 320x240 Pixel Auflösung und wird als Shield direkt auf den Arduino UNO gesteckt – keine Verdrahtung nötig. Allerdings belegt es fast alle digitalen und analogen Pins. Nur 2 digitale Pins und 1 analoger Pin bleiben frei. Für mehr Pins kann ein Arduino Mega verwendet werden. Das Shield verfügt zudem über einen microSD-Kartenslot.

Hinweis: Das Display funktioniert nicht mit Arduino Due oder Wemos D1 ESP8266.

Schritt 3: Aufbau & Test

Nach dem Aufstecken des Shields auf den Arduino UNO wird der Code hochgeladen. Das Spiel startet mit dem Druck auf „Start Game“. Der Arduino beginnt immer. Der menschliche Spieler setzt seinen Zug per Touch. Gewinner ist, wer drei Zeichen in eine Reihe (horizontal, vertikal, diagonal) bringt. Nach Spielende erscheint ein „Game Over“-Bildschirm mit „Play Again“-Button.

Der Arduino spielt sehr stark – er gewinnt meistens oder erzwingt ein Unentschieden. Der Algorithmus macht absichtlich Fehler, damit der Mensch eine Chance hat. Mit zwei zusätzlichen Codezeilen ließe sich der Arduino unschlagbar machen.

Schritt 4: Der Spielalgorithmus

Der Algorithmus ist bewusst einfach gehalten:

  1. Der Computer spielt immer zuerst – das vereinfacht das Gewinnen enorm.
  2. Erster Zug: immer eine Ecke.
  3. Zweiter Zug: eine zufällige freie Ecke (ignoriert den menschlichen Zug).
  4. Ab dem dritten Zug: Prüfen, ob der Mensch im nächsten Zug gewinnen kann → blockieren.
  5. Falls keine Blockade nötig: freie Ecke spielen, sonst zufälliges freies Feld.

Dieser Algorithmus schlägt den Menschen fast immer oder erzwingt Unentschieden. Er ist nicht optimal, aber extrem einfach zu implementieren. Bei komplexen Spielen wie Schach reicht diese Baumsuche nicht – dort braucht man echte KI und massive Rechenleistung.

Schritt 5: Der Code

Benötigte Bibliotheken:

Der Code umfasst über 600 Zeilen. Hier die Kernlogik für die Computerzüge:

// Erste zwei Züge: zufällige Ecken
int firstMoves[] = {0, 2, 6, 8};
// ... Code zur Ermittlung gespielter Züge ...
if (moves <= 2) {
    int randomMove = random(4);
    int c = firstMoves[randomMove];
    if (board[c] == 0) {
        delay(1000);
        board[c] = 2; // Computer = 2
        drawCpuMove(firstMoves[randomMove]);
    }
}

Prüfung, ob der Gegner (Mensch = 1) gewinnen kann:

int checkOpponent() {
    if (board[0]==1 && board[1]==1 && board[2]==0) return 2;
    else if (board[0]==1 && board[1]==0 && board[2]==1) return 1;
    else if (board[1]==1 && board[2]==1 && board[0]==0) return 0;
    else if (board[3]==1 && board[4]==1 && board[5]==0) return 5;
    else if (board[4]==1 && board[5]==1 && board[3]==0) return 3;
    else if (board[3]==1 && board[4]==0 && board[5]==1) return 4;
    else if (board[1]==0 && board[4]==1 && board[7]==1) return 1;
    else return 100; // keine Gewinnmöglichkeit
}

Wird ein Gewinn erkannt, blockiert der Arduino meistens – aber nicht immer, um dem Menschen eine Chance zu lassen. Welche Züge nicht blockiert werden? Finden Sie es im Code heraus!

Wichtig: Falls der Code nicht funktioniert (Banggood liefert zwei verschiedene Display-Treiber), ändern Sie die initDisplay()-Funktion:

void initDisplay() {
    tft.reset();
    tft.begin(0x9341);
    tft.setRotation(3);
}

Schritt 6: Fazit & Verbesserungen

Selbst mit einem Arduino UNO lässt sich für einfache Spiele ein unschlagbarer Algorithmus bauen. Dieses Projekt ist ein toller Einstieg in KI und Spielprogrammierung. Zukünftig sind komplexere Projekte mit Raspberry Pi geplant. Viel Spaß beim Nachbauen!

Herstellungsprozess

  1. Schach: Von antiken Ursprüngen zur modernen Fertigung – Ein Expertenüberblick
  2. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  3. Klassisches Pong-Spiel auf Arduino UNO mit OLED-Display bauen – Schritt-für-Schritt-Tutorial
  4. Tragbares kapazitives Touch-Piano mit Arduino & MPR121 – Bauanleitung
  5. DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
  6. 24×16 LED Pong-Konsole mit Arduino Nano & MAX7219 bauen
  7. Arduino Touch Breakout-Spiel: Klassisches Arcade auf 2,4″ TFT LCD
  8. Riesige Lego-Minifigur als Animatronic-Operation-Game mit Arduino bauen
  9. Pixel Chaser: Interaktives One-Tap-LED-Spiel mit Arduino Nano
  10. Arduino-gesteuertes automatisiertes Chrome Dino-Spiel bauen