Zuhause Persönliche Finanzen Java Programming Challenge: Hinzufügen von Klassen zum einfachen Tic-Tac-Toe-Programm

Java Programming Challenge: Hinzufügen von Klassen zum einfachen Tic-Tac-Toe-Programm

Video: Coding Challenge #4: Purple Rain in Processing 2024

Video: Coding Challenge #4: Purple Rain in Processing 2024
Anonim

In dieser Herausforderung verbessern Sie Ihr Tic-Tac-Toe-Spiel, indem Sie eine Java-Programmierklasse hinzufügen, die es dem Programm ermöglicht, rudimentäre Strategien zu entwickeln, wenn bewegt sich.

In der Java-Programmier-Challenge: Ein einfaches Tic-Tac-Toe-Spiel. Du musst ein Programm schreiben, um das einfache Tic-Tac-Toe-Spiel zu spielen. In dieser Herausforderung ändern Sie den Quellcode für Ihre vorherige Lösung, um die Strategie des Computers zu unterstützen.

Obwohl die Spielregeln sehr einfach sind, kann die Erstellung eines Computerprogramms, das das Spiel spielen kann, komplex sein. Eine Reihe von möglicherweise komplizierten Details müssen in das Programm aufgenommen werden. Insbesondere:

  • Das Programm muss eine Möglichkeit haben, den Status jedes der neun Quadrate, aus denen das Tic-Tac-Toe-Board besteht, intern darzustellen.

  • Das Programm muss eine Möglichkeit bieten, einen Zug für einen Spieler zu registrieren und muss sicherstellen, dass jeder Zug gültig ist (zum Beispiel darf ein Spieler nicht in einem Feld spielen, das bereits von einem X oder einem O besetzt ist).

  • Das Programm muss in der Lage sein zu bestimmen, wann ein Spieler gewonnen hat, indem es alle acht der drei möglichen Kombinationen betrachtet: Die drei Reihen, die drei Spalten und die beiden Diagonalen.

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

Zur gleichen Zeit muss die Details der Interaktion mit dem Benutzer verwalten, indem er den Benutzer auffordert, seinen Zug einzugeben, das Spiel des Computers anzukündigen, nach jedem Spiel eine aktualisierte Darstellung des Spielbretts anzuzeigen und einen Gewinner zu deklarieren oder eine Ziehung anzukündigen, wenn das Spiel vorbei ist.

In dieser Übung werden Sie gebeten, diese beiden Elemente des Tic-Tac-Toe-Programms zu trennen: Das Programm verwaltet den Status und den Fortschritt des Spiels und den Teil des Programms, der die Interaktion mit dem Benutzer übernimmt. Sie werden das tun, indem Sie eine Klasse namens TicTacToeBoard erstellen, die Methoden bereitstellt, die aufgerufen werden können, um ein komplettes Spiel zu spielen. Dann werden Sie gebeten, ein Programm zu schreiben, das die TicTacToeBoard-Klasse verwendet, um einem menschlichen Gegner zu erlauben, ein Tic-Tac-Toe-Spiel gegen den Computer zu spielen.

Aus Sicht des Benutzers funktioniert dieses Programm identisch mit dem Programm, das erstellt wurde, um die einfache Tic-Tac-Toe-Spielherausforderung zu lösen, mit einem Unterschied: Für diese Version des Spiels unternimmt das Programm rudimentäre Anstrengungen zur Strategie bei der Bestimmung. der Computer bewegt sich.Der Computer spielt nicht perfekt, also ist er immer noch leicht zu schlagen. Aber es macht etwas Mühe, nicht nur auf dem ersten leeren Platz zu spielen, den es sieht.

Die folgende Tabelle listet die Methoden auf, die die TicTacToeBoard-Klasse implementieren sollte. Denken Sie daran, dass Sie zwei erstellen müssen. Java-Dateien, um diese Herausforderung zu lösen. Das erste, TicTacToeBoard. Java implementiert die TicTacToeBoard-Klasse. Die zweite, einfach TicTacToe genannt. Java, ist das Programm, das der Benutzer ausführen wird, um ein Spiel von Tic-Tac-Toe gegen den Computer zu spielen.

Die TicTacToeBoard Klasse
Konstruktor Beschreibung
TicTacToeBoard Erzeugt ein neues TicTacToeBoard mit allen Feldern leer.
Methode Beschreibung
void reset () Setzt den Status jedes Quadrats auf leer zurück.
int getSquare (String square) Gibt den Status des durch square angegebenen Quadrats zurück, das einer der Strings A1, A2, A3, B1, B2, B3, C1, C2 oder C3 sein muss. Gibt 0 zurück, wenn das Quadrat leer ist, 1, wenn es ein X enthält, und 2, wenn es ein O enthält. Löst IllegalArgumentException aus, wenn square nicht zu den zulässigen Werten gehört.
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 Spielbeendigungsbedingungen lauten wie folgt:

1: Enthält eine beliebige Zeile, Spalte oder Diagonale alle Xs.

2: Enthält eine beliebige Zeile, Spalte oder Diagonale alle Os.

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 (egal 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 anzuzeigen, sowie Trennlinien in separaten Konsolenlinien, wie in diesem Beispiel:

O | | O

- | - | -

| X |

- | - | -

| X |

Wenn Sie stumpfen, finden Sie die Lösung auf der Registerkarte Downloads auf der Produktseite Java All-in-One für Dummies, 4th Edition.

Viel Glück!

Java Programming Challenge: Hinzufügen von Klassen zum einfachen Tic-Tac-Toe-Programm

Die Wahl des Herausgebers

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Schneller Foto-Bearbeitungsmodus ist eine abgespeckte Version des Modus "Full Photo Edit", der einfach grundlegende Fixingtools bereitstellt und mit einigen einzigartigen Funktionen aufwartet, z. B. eine Vorher-Nachher-Vorschau Ihres Bildes. Hier ist ein Schritt-für-Schritt-Workflow, den Sie im Schnellfoto-Bearbeitungsmodus verwenden können, um Ihre Fotos zu reparieren:

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Fotoeffekte in Photoshop Elements 11 funktionieren wie Anwenden von Filtern; Das Dialogfeld "Filtergalerie" bietet Ihnen zahlreiche Optionen zum Anwenden eines Filters. Das geführte Bedienfeld bietet Ihnen Filtereffekte und führt Sie dann durch die Schritte zum Anpassen von Helligkeitswerte, Ändern von Farbton und Sättigung und Durchführen weiterer Anpassungen zum Vervollkommnen des Ergebnisses. Sie ...

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Absatztyp in Photoshop Elements 11 ist ähnlich zu dem Text, den Sie in ein Textverarbeitungsprogramm eingeben, mit der Ausnahme, dass er in einem Textfeld oder einem Begrenzungsrahmen enthalten ist. Wenn Sie größere Textabschnitte haben, die Sie in ein Bild eingeben möchten, ist die Eingabe des Textes als Absatztyp die praktischste Option. Während ...

Die Wahl des Herausgebers

PHP-Anweisungen - Dummys

PHP-Anweisungen - Dummys

PHP ist eine Skriptsprache, die speziell für die Verwendung im Internet entwickelt wurde. Es enthält Funktionen, die Sie bei der Programmierung der Aufgaben unterstützen, die für die Entwicklung dynamischer Webanwendungen erforderlich sind. Diese Tabelle gibt einen kurzen Überblick über einige der Anweisungen, die Sie häufig verwenden werden: Anweisung Beschreibung array ("key" => "value", ...); Casts a ...

PHP-Schablonen-Systeme - Schablonen-Systeme

PHP-Schablonen-Systeme - Schablonen-Systeme

Können die Menge an Arbeit reduzieren, die Sie für die Erstellung einer Website in PHP benötigen. Wenn Sie eine Website erstellen, verwenden Sie häufig das gleiche Layout für die gesamte Website. Sie haben eine obere Portion, vielleicht mit einem Menü; ein Hauptinhaltsbereich; und ein unterer Teil, vielleicht mit Links oder ...

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Die ALTER Query wird verwendet, um die Struktur von eine MySQL-Datenbank. In dieser Liste wird die Syntax für die Änderungen angezeigt, die Sie wahrscheinlich vornehmen möchten: ADD-Spaltenbezeichnung ALTER-Spaltenname SET-DEFAULT-Wert ALTER-Spaltenname DROP DEFAULT CHANGE-Spaltenname newcolname-Definition DROP-Spaltenname MODIFY-Spaltenname RENAME newtablename

Die Wahl des Herausgebers

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Mit NoSQL haben Sie Hochgeschwindigkeits-Caching. Stellen Sie sich vor, Sie sind Bankangestellte und arbeiten mit drei anderen Kollegen zusammen. Jeder hat eine Reihe von Leuten, die bedient werden sollen. Einer der Kunden bleibt jedoch in der Schlange, um zu fragen, ob sein Scheck bereits eingelöst und der Betrag seinem Konto gutgeschrieben wurde. Wenn Sie ...

Wie man Einsichten aus Big Data kommuniziert - Dummies

Wie man Einsichten aus Big Data kommuniziert - Dummies

Big Data kann helfen, Einblicke zu gewinnen. Unternehmen gewinnen Wettbewerbsvorteile, wenn die richtigen Informationen zur richtigen Zeit an die richtigen Leute geliefert werden. Dies bedeutet, Erkenntnisse und Informationen aus Daten zu extrahieren und sie Entscheidungsträgern auf eine Weise zu vermitteln, die sie leicht verstehen. Schließlich sind Menschen weniger wahrscheinlich zu handeln, wenn sie ...

Zookeeper und HBase Reliability - dummies

Zookeeper und HBase Reliability - dummies

Zookeeper ist ein verteiltes Cluster von Servern, das gemeinsam zuverlässige Koordinations- und Synchronisationsdienste für Cluster-Anwendungen bereitstellt. .. Zugegeben, der Name "Zookeeper" mag auf den ersten Blick eine seltsame Wahl sein, aber wenn Sie verstehen, was es für einen HBase-Cluster tut, können Sie die Logik dahinter sehen. Beim Erstellen und Debuggen von verteilten Anwendungen ...