Inhaltsverzeichnis:

Arduino Touch Tic Tac Toe-Spiel - Gunook
Arduino Touch Tic Tac Toe-Spiel - Gunook

Video: Arduino Touch Tic Tac Toe-Spiel - Gunook

Video: Arduino Touch Tic Tac Toe-Spiel - Gunook
Video: Arduino - Tic Tac Toe Game with Touchpad 2024, November
Anonim
Image
Image
Arduino Touch Tic Tac Toe-Spiel
Arduino Touch Tic Tac Toe-Spiel
Arduino Touch Tic Tac Toe-Spiel
Arduino Touch Tic Tac Toe-Spiel
Arduino Touch Tic Tac Toe-Spiel
Arduino Touch Tic Tac Toe-Spiel

Liebe Freunde, willkommen zu einem weiteren Arduino-Tutorial! In diesem detaillierten Tutorial werden wir ein Arduino Tic Tac Toe-Spiel erstellen. Wie Sie sehen, verwenden wir einen Touchscreen und spielen gegen den Computer. Ein einfaches Spiel wie Tic Tac Toe ist eine großartige Einführung in die Spieleprogrammierung und künstliche Intelligenz. Auch wenn wir in diesem Spiel keine Algorithmen der künstlichen Intelligenz verwenden werden, werden wir verstehen, warum Algorithmen der künstlichen Intelligenz in komplexeren Spielen erforderlich sind.

Spiele für Arduino zu entwickeln ist nicht einfach und erfordert viel Zeit. Aber wir können einige einfache Spiele für Arduino entwickeln, weil es Spaß macht und es uns ermöglicht, einige fortgeschrittenere Programmierthemen wie Künstliche Intelligenz zu erforschen. Es ist eine großartige Lernerfahrung und am Ende haben Sie ein schönes Spiel für die Kinder!

Lassen Sie uns nun dieses Projekt bauen.

Schritt 1: Holen Sie sich alle Teile

Image
Image
Die 2,8
Die 2,8

Die Teile, die benötigt werden, um dieses Projekt zu bauen, sind die folgenden:

Ein Arduino Uno ▶

Ein 2,8-Zoll-Touchscreen ▶

Die Projektkosten sind sehr gering. Es ist nur 15 $

Bevor Sie versuchen, dieses Projekt zu erstellen, sehen Sie sich bitte das Video an, das ich über das Touch-Display vorbereitet habe. Ich habe es in diesem instructable angebracht. Es hilft Ihnen, den Code zu verstehen und den Touchscreen zu kalibrieren.

Schritt 2: Das 2,8-Zoll-Touch-Farbdisplay für Arduino

Image
Image
Die 2,8
Die 2,8
Die 2,8
Die 2,8

Ich habe diesen Touchscreen auf banggood.com entdeckt und beschlossen, ihn zu kaufen, um ihn in einigen meiner Projekte zu verwenden. Wie Sie sehen, ist das Display günstig und kostet etwa 11 US-Dollar.

Hol es dir hier ▶

Das Display bietet eine Auflösung von 320x240 Pixeln und wird als Shield geliefert, was die Verbindung mit Arduino extrem einfach macht. Wie Sie sehen, verwendet das Display fast alle digitalen und analogen Pins des Arduino Uno. Bei Verwendung dieses Shields bleiben uns nur 2 digitale Pins und 1 analoger Pin für unsere Projekte. Glücklicherweise funktioniert das Display auch mit dem Arduino Mega gut, so dass wir, wenn wir mehr Pins benötigen, den Arduino Mega anstelle des Arduino Uno verwenden können. Leider funktioniert dieses Display nicht mit dem Arduino Due oder dem Wemos D1 ESP8266 Board. Ein weiterer Vorteil des Shields ist, dass es einen Micro-SD-Slot bietet, der sehr einfach zu bedienen ist.

Schritt 3: Erstellen des Projekts und Testen

Das Projekt aufbauen und testen
Das Projekt aufbauen und testen
Das Projekt aufbauen und testen
Das Projekt aufbauen und testen
Das Projekt aufbauen und testen
Das Projekt aufbauen und testen

Nachdem wir den Bildschirm mit dem Arduino Uno verbunden haben, können wir den Code laden und sind bereit zu spielen.

Zuerst drücken wir die Schaltfläche „Spiel starten“und das Spiel beginnt. Der Arduino spielt zuerst. Wir können dann unseren Zug spielen, indem wir einfach den Bildschirm berühren. Der Arduino spielt dann seinen Zug und so weiter. Der Spieler, dem es gelingt, drei seiner Markierungen in einer horizontalen, vertikalen oder diagonalen Reihe zu platzieren, gewinnt das Spiel. Wenn das Spiel vorbei ist, wird der Bildschirm Game Over angezeigt. Wir können dann die Play Again-Taste drücken, um das Spiel erneut zu starten.

Der Arduino ist in diesem Spiel sehr gut. Es wird die meisten Spiele gewinnen, oder wenn Sie ein sehr guter Spieler sind, endet das Spiel unentschieden. Ich habe diesen Algorithmus absichtlich so entworfen, dass er einige Fehler macht, um dem menschlichen Spieler eine Chance zu geben, zu gewinnen. Indem wir dem Code des Spiels zwei weitere Zeilen hinzufügen, können wir es dem Arduino unmöglich machen, das Spiel zu verlieren. Aber wie kann ein 2$-Chip, die Arduino-CPU, das menschliche Gehirn schlagen? Ist das von uns entwickelte Programm intelligenter als das menschliche Gehirn?

Schritt 4: Der Spielalgorithmus

Der Spielalgorithmus
Der Spielalgorithmus
Der Spielalgorithmus
Der Spielalgorithmus

Um diese Frage zu beantworten, schauen wir uns den von mir implementierten Algorithmus an.

Der Computer spielt immer zuerst. Allein diese Entscheidung macht das Spiel für den Arduino viel einfacher zu gewinnen. Der erste Zug ist immer eine Ecke. Der zweite Zug für den Arduino ist auch eine zufällige Ecke aus dem Rest, ohne sich um den Spielerzug zu kümmern. Ab diesem Zeitpunkt prüft der Arduino zunächst, ob der Spieler im nächsten Zug gewinnen kann und blockiert diesen Zug. Wenn der Spieler in einem einzigen Zug nicht gewinnen kann, spielt er einen Eckzug, falls verfügbar, oder einen zufälligen aus den verbleibenden. Das war's, dieser einfache Algorithmus kann den menschlichen Spieler jedes Mal schlagen oder im schlimmsten Fall führt das Spiel zu einem Unentschieden. Dies ist nicht der beste Tic-Tac-Toe-Spielalgorithmus, aber einer der einfachsten.

Dieser Algorithmus kann leicht in Arduino implementiert werden, da das Tic Tac Toe-Spiel sehr einfach ist und wir es leicht analysieren und lösen können. Wenn wir den Spielbaum entwerfen, können wir einige Gewinnstrategien entdecken und diese einfach in Code implementieren oder wir können die CPU den Spielbaum in Echtzeit berechnen lassen und den besten Zug selbst auswählen. Natürlich ist der Algorithmus, den wir in diesem Spiel verwenden, sehr einfach, denn das Spiel ist sehr einfach. Wenn wir versuchen, einen Gewinnalgorithmus für Schach zu entwickeln, können wir selbst mit dem schnellsten Computer den Spielbaum in tausend Jahren nicht berechnen! Für Spiele wie dieses brauchen wir einen anderen Ansatz, wir brauchen einige Algorithmen der künstlichen Intelligenz und natürlich eine riesige Rechenleistung. Mehr dazu in einem zukünftigen Video.

Schritt 5: Code des Projekts

Code des Projekts
Code des Projekts

Werfen wir einen kurzen Blick auf den Code des Projekts. Wir benötigen drei Bibliotheken, um den Code zu kompilieren.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Touchscreen:

Wie Sie sehen, benötigt selbst ein einfaches Spiel wie dieses mehr als 600 Zeilen Code. Der Code ist komplex, daher werde ich nicht versuchen, ihn in einem kurzen Tutorial zu erklären. Ich zeige Ihnen jedoch die Implementierung des Algorithmus für die Arduino-Bewegungen.

Zuerst spielen wir zwei zufällige Ecken.

<int firstMoves={0, 2, 6, 8}; // verwendet diese Positionen zuerst for(counter=0;counter<4;counter++) //Zähle die ersten gespielten Züge { if(board[firstMoves[counter]!=0) // Der erste Zug wird von jemandem gespielt { movePlayed++; } } do{ if (moves <=2) { int randomMove = random(4); int c=firstMoves[randomMove]; if (board[c]==0) { Verzögerung (1000); Brett[c]=2; Serial.print (firstMoves [randomMove]); Serial.println(); drawCpuMove(firstMoves[randomMove]); b = 1; } }

Als nächstes prüfen wir in jeder Runde, ob der Spieler im nächsten Zug 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; sonst 100 zurückgeben; }

Wenn ja, blockieren wir diese Bewegung meistens. Wir blockieren nicht alle Züge, um dem menschlichen Spieler eine Gewinnchance zu geben. Können Sie herausfinden, welche Züge nicht blockiert sind? Nachdem wir den Zug blockiert haben, spielen wir eine verbleibende Ecke oder einen zufälligen Zug. Sie können den Code studieren und Ihren eigenen unschlagbaren Algorithmus einfach implementieren. Wie immer finden Sie den Code des Projekts an diesem instructable.

HINWEIS: Da Banggood dasselbe Display mit zwei verschiedenen Displaytreibern anbietet, ändern Sie die initDisplay-Funktion wie folgt, wenn der obige Code nicht funktioniert:

void initDisplay()

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

Schritt 6: Abschließende Gedanken und Verbesserungen

Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen

Wie Sie sehen, können wir selbst mit einem Arduino Uno einen unschlagbaren Algorithmus für einfache Spiele bauen. Dieses Projekt ist toll, weil es einfach zu bauen ist und gleichzeitig eine tolle Einführung in Künstliche Intelligenz und Spieleprogrammierung. Ich werde versuchen, in Zukunft mit dem leistungsstärkeren Raspberry Pi einige fortgeschrittenere Projekte mit künstlicher Intelligenz zu erstellen, also bleiben Sie dran! Ich würde gerne Ihre Meinung zu diesem Projekt hören.

Bitte posten Sie Ihre Kommentare unten und vergessen Sie nicht, das instructable zu mögen, wenn Sie es interessant finden. Vielen Dank!

Empfohlen: