Java-Programmierung Herausforderung: Hinzufügen Klasse mit dem einfachen Tic-Tac-Toe-Programm

In dieser Herausforderung zu verbessern Sie Ihre Tic-Tac-Toe-Spiel durch eine Java-Programmierung Klasse hinzufügen, die das Programm ermöglicht eine rudimentäre Anstrengungen im Hinblick auf Strategie zu machen, wenn die Bewegungen des Computers zu bestimmen.

Im Java-Programmierung Herausforderung: Ein einfaches Tic-Tac-Toe-Spiel Sie forderte, ein Programm zu schreiben, das einfache Spiel von Tic-Tac-Toe zu spielen. In dieser Herausforderung ändern Sie den Quellcode für Ihre bisherige Lösung den Computer strategize zu helfen.

Obwohl die Regeln des Spiels sind sehr einfach, ein Computerprogramm zu schaffen, die das Spiel spielen können, kann sehr komplex sein. Eine Reihe von potenziell komplizierte Details müssen in das Programm aufgenommen werden. Speziell:

  • Das Programm muss eine Möglichkeit haben, intern den Status von jedem der neun Quadrate, die die Tic-Tac-Toe-Board bilden.

  • Das Programm muss einen Weg bieten einen Zug für beide Spieler zu registrieren und müssen sicherstellen, dass jeder Zug gültig ist (zum Beispiel wird ein Spieler nicht erlaubt auf einem Platz zu spielen, die bereits durch ein X oder ein O. belegt ist

  • Das Programm muss in der Lage sein, zu bestimmen, wann einer der Spieler durch einen Blick auf alle acht möglichen Drei-in-einer-Reihe Kombinationen gewonnen hat: Die drei Reihen, die drei Spalten und den beiden Diagonalen.

  • Das Programm muss auch in der Lage festzustellen, wann das Spiel unentschieden ist - das heißt, wenn alle neun Quadrate gespielt wurden und keiner der Spieler gewonnen hat.

Zur gleichen Zeit hat das Programm die Details zu verwalten mit dem Benutzer zu interagieren, indem Sie den Benutzer auffordert, seine Bewegung zu geben, den Computer des Spiels ankündigen, eine aktualisierte Darstellung der Platine nach jedem Spiel angezeigt wird, und einen Sieger zu erklären oder die Ankündigung ein Unentschieden, wenn das Spiel vorbei ist.

den Teil des Programms, das den Status und Fortschritt des Spiels und den Teil des Programms verwaltet, die die Interaktion mit dem Benutzer Griffe: In dieser Herausforderung werden Sie diese beiden Elemente des Tic-Tac-Toe-Programm zu trennen gefragt. Sie werden das tun, indem Sie eine Klasse erstellen benannt TicTacToeBoard was bietet Methoden, die aufgerufen werden kann, ein komplettes Spiel zu spielen. Dann werden Sie aufgefordert, ein Programm zu schreiben, das verwendet TicTacToeBoard Klasse einen menschlichen Gegner zu erlauben, ein Spiel von Tic-Tac-Toe gegen den Computer zu spielen.

Aus der Sicht des Benutzers, wird dieses Programm arbeiten identisch mit dem Programm erstellt die einfache Tic-Tac-Toe-Spiel Herausforderung zu lösen, mit einem Unterschied: Für diese Version des Spiels, macht das Programm eine rudimentäre Anstrengungen im Hinblick auf Strategie, wenn die Bewegungen des Computers zu bestimmen . Der Computer spielt nicht perfekt, so ist es immer noch leicht schlagbar. Aber es hat einige Mühe machen darüber hinaus einfach in der ersten leeren Platz spielen sie sieht.

In der folgenden Tabelle sind die Methoden, die die TicTacToeBoard Klasse sollte implementieren. Denken Sie daran, müssen Sie zwei erstellen .Java Dateien, diese Herausforderung zu lösen. Der Erste, TicTacToeBoard.java, implementiert die TicTacToeBoard Klasse. Der zweite, mit dem Namen einfach TicTacToe.java, ist das Programm der Benutzer ein Spiel von Tic-Tac-Toe gegen den Computer zu spielen laufen.

Die TicTacToeBoard Klasse
constructorBeschreibung
TicTacToeBoardErstellt ein neues TicTacToeBoard mit allen Plätzen leer.
VerfahrenBeschreibung
void reset ()Setzt den Status jedes Quadrat zu leeren.
int getSquare (String Quadrat)Gibt den Status des Platzes durch Quadrat angegeben, die eine der Saiten sein muss A1, A2, A3, B1, B2, B3, C1, C2, oder C3. Gibt 0 zurück, wenn der Platz leer ist, 1, wenn es enthält eine X, und 2, wenn es sich um eine O. enthält Wirft Illegal ob Platz nicht eine der zulässigen Werte ist.
nichtig playAt (String Quadrat, int-Spieler)Markiert den angegebenen Platz (A1, A2, A3, B1, B2, B3, C1, C2, oder C3) Für den angegebenen Spieler (1 für X, 2 für O). wirft Illegal ob Platz nicht einer der zulässigen Werte ist, Spieler ist nicht 1 oder 2, oder der angegebene Platz ist nicht leer.
int isGameOver ()Legt fest, ob das Spiel vorbei ist. Gibt 0 zurück, wenn das Spiel nicht vorbei ist, 1, wenn X das Spiel gewonnen hat, 2, wenn O das Spiel gewonnen hat, und 3, wenn das Spiel unentschieden ist. Das Spiel endende Bedingungen sind wie folgt:
1: Wenn eine Zeile, Spalte oder diagonal alle Xs enthält.
2: Wenn eine Zeile, Spalte oder diagonal alle Os enthält.
3: Wenn es keine leeren Plätze und weder X noch O hat gewonnen.
int getNextMove ()Gibt eine ganze Zahl, die den nächsten Schritt für den Computer-Gegner. Diese Methode sollte ein rudimentäres Anstrengungen unternehmen, um einen guten Zug zu wählen, nach folgender Strategie:
* Wenn das Zentrum (Quadrat B2) Ist leer, der Mitte Platz zu spielen.
* Wenn das Zentrum nicht leer, aber jeder der vier Ecken (Quadrate A1, A3, C1, oder C3) Leer sind, eine der Ecken spielen (es ist egal, welche).
* Wenn das Zentrum nicht leer ist und keine Ecken sind leer, eine der Kanten spielen (Quadrate A2, B1, B3, oder C2).
String toString ()Gibt eine Zeichenfolge zurück, die den aktuellen Status der Karte darstellt. Die Zeichenfolge enthält new-line Zeichen die Zeilen angezeigt werden, sowie Trennlinien auf separaten Konsole Linien, wie in diesem Beispiel:
O | | O
---| --- | ---
| X |
---| --- | ---
| X |

Wenn Sie nicht gefunden haben, können Sie die Lösung auf die finden Registerkarte Downloads des Java All-in-One For Dummies, 4th Edition Produktseite.

Viel Glück!

Menü