Video: C++ Praxis Tutorial #014 TicTacToe mit Computergegner programmieren 2024
In Java Programming Challenge: Ein einfaches Tic-Tac-Toe-Spiel wurden Sie herausgefordert, ein konsolenbasiertes Programm zu schreiben, das das einfache Spiel von Tic-Tac-Toe spielt. Die Java-Programmierherausforderung besteht darin, Swing zu verwenden, um eine grafische Benutzerschnittstelle (GUI) zu dem Programm hinzuzufügen. Die GUI sollte der hier gezeigten ähneln.
Das Spiel ist einfach. Der menschliche Spieler spielt zuerst, indem er auf eines der Quadrate klickt. Das Quadrat, auf das der Mensch geklickt hat, zeigt ein großes X an. Nachdem der Mensch gespielt hat, bestimmt das Programm, ob der Mensch einen Draw gewonnen oder gezwungen hat. Wenn dies der Fall ist, wird eine Nachricht angezeigt, das Board wird zurückgesetzt und ein neues Spiel beginnt. Wenn nicht, wählt der Computer eine Bewegung und markiert sein Quadrat mit einem großen O.
Das Programm ermittelt dann, ob der Computer das Spiel gewonnen hat. Wenn dies der Fall ist, zeigt das Programm eine Nachricht an, setzt die Karte zurück und startet ein neues Spiel. Wenn nicht, spielt der menschliche Spieler erneut. Dies dauert an, bis ein Spieler gewinnt oder alle Felder gefüllt sind.
Ihr Programm sollte dieselbe TicTacToeBoard-Klasse verwenden, die Sie für die Java-Programmieraufgabe erstellt haben: Klasse zum einfachen Tic-Tac-Toe-Programm hinzufügen. Mit anderen Worten muss es genau die gleichen Methoden implementieren. Für Ihre Bequemlichkeit werden diese Methoden in der folgenden Tabelle wiederholt.
Konstruktor | Beschreibung |
---|---|
TicTacToeBoard | Erzeugt ein neues TicTacToeBoard mit allen Feldern leer. |
Methode | Beschreibung |
void reset () | Setzt den Status jedes Quadrats auf leer zurück. |
void playAt (String square, int player) | Markiert das angegebene Quadrat (A1, A2, A3, B1, B2, B3, C1, C2 oder C3) für den angegebenen Spieler (1 für X, 2 für O). Löst IllegalArgumentException aus, wenn square nicht zu den zulässigen Werten gehört, player nicht 1 oder 2 ist oder das angegebene Quadrat nicht leer ist. |
int isGameOver () | Legt fest, ob das Spiel beendet ist. Gibt 0 zurück, wenn das Spiel noch nicht beendet ist, 1, wenn X das Spiel gewonnen hat, 2, wenn O das Spiel gewonnen hat, und 3, wenn das Spiel unentschieden ist. Die Spielendbedingungen lauten wie folgt:
1: Wenn eine Zeile, Spalte oder Diagonale alle X enthält. 2: Wenn eine Zeile, Spalte oder Diagonale alle O enthält. 3: Wenn es keine leeren Quadrate gibt und weder X noch O gewonnen haben. |
int getNextMove () | Gibt eine ganze Zahl zurück, die den nächsten Zug für den Computergegner darstellt. Diese Methode sollte eine rudimentäre Anstrengung unternehmen, um einen guten Zug gemäß der folgenden Strategie auszuwählen:
* Wenn das Zentrum (Quadrat B2) leer ist, spielen Sie das mittlere Quadrat. * Wenn die Mitte nicht leer ist, aber eine der vier Ecken (Quadrate A1, A3, C1 oder C3) leer ist, spielen Sie eine der Ecken (es spielt keine Rolle, welche). * Wenn die Mitte nicht leer ist und keine Ecken leer sind, spielen Sie eine der Kanten (Quadrate A2, B1, B3 oder C2). |
String toString () | Gibt eine Zeichenfolge zurück, die den aktuellen Status der Karte darstellt. Die Zeichenfolge enthält Zeilenumbruchzeichen, um die Zeilen sowie Trennlinien in separaten Konsolenzeilen anzuzeigen, wie in diesem Beispiel:
O | | O - | - | - | X | - | - | - | X | |
Die Lösung für diese Herausforderung finden Sie auf der Registerkarte Downloads der Produktseite Java All-in-One für Dummies, 4th Edition.
Viel Glück!