Mein Java Projekt
Praktikum aus Programmierung
Markus Schapler (email: markus.schapler@onemail.at)
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.

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.
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.