BlueJ Logo.png
Arbeitsauftrag

Implementiere mit einem Partner/einer Partnerin deiner Wahl das Spiel "Tic-Tac-Toe". Koordiniert euch dabei über ein gemeinsames Git-Repository.


Zum Abschluss der Wiederholung der Objektorientierten Programmierung mit Java sollst du nun ncoh ein Mini-Projekt umsetzen: Das Spiel "Tic-Tac-Toe".

Quotes.png

Auf einem quadratischen, 3x3 Felder großen Spielfeld setzen die beiden Spieler abwechselnd ihr Zeichen (ein Spieler Kreuze, der andere Kreise) in ein freies Feld. Der Spieler, der als Erster drei Zeichen in eine Zeile, Spalte oder Diagonale setzen kann, gewinnt. Wenn allerdings beide Spieler optimal spielen, kann keiner gewinnen, und es kommt zu einem Unentschieden. Das heißt, alle neun Felder sind gefüllt, ohne dass ein Spieler die erforderlichen Zeichen in einer Reihe, Spalte oder Diagonalen setzen konnte.

→ Quelle: wikipedia:Tic-Tac-Toe

Im Programm sollen zwei Spieler im Wechsel ziehen können, bis einer gewonnen hat. Die Wahl des Spielfeldes erfolgt jeweils durch die Eingabe der Feldkoordinaten (siehe Abbildung) auf der Kommandozeile.

(0,2) (1,2) (2,2)
(0,1) (1,1) (2,1)
(0,0) (1,0) (2,0)

Die Ausgabe des Spielfeldes kann als Text auf der Kommandozeile vorgenommen werden.

Objektorientierte Modellierung

Als ersten Schritt muss das Projekt Modelliert - also geplant - werden. Dazu wird die Modellierungssprache UML verwendet. Folgendes Entwurfsklassendiagramm zeigt den Grundaufbau des Spiels. Du kannst das Modell beliebig verändern und ergänzen, wenn du möchtest.

Zur Erzeugung von UML-Diagrammen nutzen wir das Programm UMLet. Es erlaubt die Erzeugung (einfacher) UML-Diagramme aus Text-Definitionen. Wenn du UMLet öffnest siehst du rechts eine Auswahl an UML-Elementen. Durch einen Doppelklick wird es in den Editor links übernommen. Dann siehst du unten ("Properties") die Text-Definition dieses Elements. Dort kannst du Änderungen vornehmen.

Die beiden Klassen oben haben zum Beispiel diese Definitionen:

*TicTacToe*
--
spielfeld: Zahl[][]
--
spielErstellen
spielStarten
istSpielVorbei: Wahrheitswert
*Spieler*
--
name: Text
--
ziehen

Umsetzungshinweise

  • Für die Eingabe auf der Kommandozeile kann die Klasse Scanner benutzt werden.
  • Das Spielfeld besteht aus 3-mal-3 Feldern und kann als zweidimensionales Array gespeichert werden. Wählen einen geeigneten Datentyp für das Array.
  • Hauptteil des Spiels ist die Prüfung, ob einer der Spieler gewonnen hat. Überlege dir, welche Endsituationen es im Spiel geben kann.
  • Prüfe, ob die Eingaben der Spieler gültige Koordinaten sind und entscheide auch, wie du im Fehlerfall vorgehen möchtest.
  • Versuche das Spiel für die Benutzer / Spieler möglichst komfortabel zu gestalten.