Mein Java Projekt

Praktikum aus Programmierung

 

 

 

Markus Schapler (email: markus.schapler@onemail.at)

Java Code

Problemdefinition

Mein Projekt bearbeitet ein auf Texteingabe basierendes TicTacToe-Programm. Ein neuer Spieler soll nach dem Einloggen in den Server zuerst eine Begrüßung und anschließend eine Liste der wählbaren Befehle erhalten. Diese Liste soll auch jederzeit während des Spiels für etwaiges Nachschlagen wählbar sein.

Der Spieler kann als nächstes seinen Namen eingeben, bekommt eine Spielnummer zugewiesen und wird automatisch der Warteliste beigefügt.

Jeder wartende Spielwillige kann (sofern sich mindestens 2 Spieler in der Warteliste befinden) jederzeit ein neues Spiel mit einem weiteren wartenden Spieler beginnen. Jedem Spielpartner wird nun entweder das „x“ oder „o“ zugewiesen, und der Spieler mit dem „x“ beginnt das Spiel.

Reihum werden nun alle Felder von einem der beiden Spieler mit seinem Icon gekennzeichnet.

Das Spiel ist zu Ende, wenn entweder einer der Spieler eine Reihe oder Diagonale mit seinem Icon gemarkt hat, oder, wenn alle Felder markiert sind, ohne, dass der obige Siegesfall eintritt.

Das Programm gibt den Sieger bekannt und die Spieler werden wieder der Warteliste beigefügt.

Analyse

 

 

Klassendiagramm

 

Siehe Anlage

Implementierung

Das Protokoll ist die zentrale Schaltstelle aller Klassen und sorgt dafür, dass alle wesentlich beteiligten Klassen aufeinander zugreifen können. Außerdem ist durch die Texteingabe das Protokoll das eigentliche Steuerungselement des Programms. Der Benutzer kann erst durch die Eingabe vordefinierter Befehle das Programm sozusagen durchwandern und benutzen.

 

Kurze Beschreibung der jeweiligen Klassen und derer Methoden:

 

Klasse „Spieler“: dient zum instanzieren neuer Spieler, für die ein Name und eine    
        dem Spieler zugeordnete Protokollnr. gespeichert wird.

        Die Methode „out“ dient zur Textausgabe am Bildschirm des jeweiligen Spielers.

Klasse „TTT“:  erzeugt ein neues Spiel, bearbeitet das Spielfeld u. überprüft die     Siegbedingungen. Dies findet statt, indem für jedes Rand- und Eckfeld des        Spielfelds überprüft wird, ob eine horizontale, vertikale oder diagonale Linie           aus den Icons des Spielers gebildet werden kann.

Klasse „TTTServer“: speichert und entfernt die Spieler aus der Warteliste. Außerdem       findet das Herzstück des Programms - der Aufbau der Serververbindung –        hier statt.

Klasse „TTTServerThread“: erst diese Klasse ermöglicht das Einloggen mehrerer             Benutzer auf einem Server. Der hier gespeicherte Printwriter ist die Basis für        die Benutzer-individuelle Textausgabe.

Klasse „TTTProtocol“: ist das Zentrum der Befehlseingabe, indem die vom Benutzer         eingegebenen Befehle an die zuständigen Methoden und Klassen       weitergeleitet werden. Des weiteren bietet diese Klasse den notwendigen     Informationsschnittpunkt, sodass jede Klasse alle notwendigen Informationen             über andere Klassen erhalten kann.

 

Dokumentation für den Anwender

Allgemeine Befehle des Protokolls

 

'help': gibt eben diese Befehlsliste aus

exit': beendet das Programm

'name <spielername>': damit kann der Benutzer seinen Namen eingeben. Ist schon          ein Benutzer unter diesem Namen angemeldet, wird eine Fehlermeldung ausgegeben

'list': gibt eine Liste der Spieler aus, die derzeit auf ein Spiel warten

'play9 <number of player>': mit diesem Befehl kann man ein neues Spiel mit einem           Partner seiner Wahl starten. Gewählt wird dieser via Spielernummer. Existiert        die Nummer nicht, oder die Nummer bezieht sich auf den auswählenden            Spieler selbst, so wird eine Fehlermeldung ausgegeben.

 

Spielbefehle:

 

'place <number of sector>': auf diese Weise kann man einen Sektor des Spielfeldes        mit der jeweiligen Markierung (x oder o) versehen. Existiert der Sektor nicht,       oder er ist bereits markiert, so wird eine entsprechende Meldung ausgegeben

'getfield': mit diesem Befehl kann man das aktuelle Spielfeld am Bildschirm ausgeben      lassen.

 

 

Nach Eingabe des Spielernamens wählt der Benutzer aus der Warteliste einen Spielpartner u. startet ein Spiel. Nach Beendigung dessen, werden beide Spielpartner wieder der Warteliste beigefügt.