Home
Projektbeschreibung
Projektvorstellung
Protokoll
Ergebnis
Dokumentation (Javadoc) |
Projekt: 4gewinnt - realisiert als RMI-verteiltes Applet
Projektvorstellung
Zu Beginn haben wir uns das Ergebnis unserer Arbeit so vorgestellt:
Projekt :
Erstellung eines Client/Server Spiels, das in einem Applet
abläuft .
Als Spiel wollen wir 4gewinnt benutzen.
Es sollen dabei jeweils zwei Spieler über das Netz gegeneinander
spielen.
Die Anzahl der Spielpaarungen soll nicht begrenzt sein.
Das ganze soll mit Java RMI programmiert werden.
Nähere Beschreibung:
Die Serverseite soll von Markus programmiert werden, der Client
und das GUI
von Sebastian.
Das Applet soll zunächst einmal Fragen ob noch Mitspieler vorhanden
sind und
den Interessenten dann mit einem freien Spieler verbinden.
Das GUI soll eine Spielfläche zur Verfügung stellen. Die
Spielsteine
sollen in die möglichen Schächte geworfen werden können.
Das Spiel folgt dann den bekannten Regeln.
Außerdem sollen sich die beiden Spieler mit kurzen Nachrichten
unterhalten
können.
Protokoll
-
4. Januar: grober Desingversuch auf vielen Papieren.
-
5. Januar: versuch den Entwurf in eine einfache lauffähige Anwendung
zu implementieren: zwei Clients sollen Nachrichten an einen Server schicken.
Der Server soll nach eingegangener Nachricht diese an beide schicken. Dies
gelingt zunächst nicht (unmarshalling nested Exception).
-
Daher Überlegungen, wie Problem zu lösen. Erster Ansatz ist,
das Design zu änden. Nicht der Server gibt die Nachricht selbständig
beim Erhalten einer solchen weiter, sondern die Klients rufen nach dem
Erhalten einer Nachricht eine Methode auf dem Server auf, die erst zurückkehrt,
wenn der Server eine neue erhalten hat. Dieser Ansatz ist aber unzufriedenstellend,
da dies den Charakter von RMI zerstört, mehr den Charakter von listen()
eines Socket-basierten Client/Server-Systems aufweist.
-
Dennoch gelingt es, auf diese Weise ein erstes Testprogramm zu etablieren,
das die gewünschten Funktionen aufweist.
-
6. Januar:Feiertag
-
8. Januar: Endlich wieder Vorlesungen und Übungen. In der zu dieserVorlesung
gehörenden Fragestunde überzeugt uns Julius unsere Fragen zu
stellen. Markus Leypold kann sie zumindest insoweit beantworten, dass wir
motiviert sind den ersten Designentwurf wieder anzugehen.
An der Schwelle zum 9. Januar zeigen die Bemühungen Erfolg.
-
im Laufe der 2. Woche: Das Grundgerüst läuft als
einfache Textanwendung, mit Ausnahme der Spielelogik.
-
3. Woche: das GUI nimmt Formen an. Zuerst das Ding, in dem die Spielsteine
rumliegen. Am 18./19. kommt das ChatTextPanel hinzu.
-
4. Woche: das InfoAndChoicePanel wird erstellt. Am 24. wird die Spielelogik
implementiert.
-
25. abends: die Finalversion ist releasable (hoffentlich), dies ergaben
zählbare Versuche.
-
26. Januar: diese Beschreibung hält uns vom Mittagessen ab.
-
wann wird es als Applet laufen?
Ergebnis
Herausgekommen ist ein Client/Server-System mit dem man in
Paaren das Spiel 4gewinnt spielen kann. Dabei kann man sich global über
alle Spielpaarungen hinweg unterhalten.
Der Server verwaltet "beliebig" viele Spielpaarungen. Die Zuteilung
der einzelnen Spielertupel erfolgt nach dem Zeitpunkt der Anmeldung
der Clients am Server, kann also von den einzelnen Spielern nicht direkt
beeinflusst, d. h. ausgewählt werden.
Nach dem Aufruf des Applets bekommt der Spieler einen Bildschirm, in
dem er aufgefordert wird, seinen Namen einzugeben:
Dann gelangt man auf die eigentliche Spieloberfläche. Mit "Neues
Spiel" kann man jederzeit (ach aus einem laufenden Spiel heraus, ohne langwierigen
Dialog) vom Server ein neues Spiel beziehen.
Kommt keine Verbindung zustande (insgesammt wird viermal versucht zu
Verbinden), so erhält man eine typische Fehlermeldung und nichts geht
mehr. Man kann sich mit Hilfe des Buttons "Spiel beenden" ebenfalls aus
dem laufenden Spiel verabschieden, ohne ein neues zu erhalten. Man ist
dann am Server abgemeldet, erhält also auch keine Chatnachrichten
mehr, noch kann man welche abschicken (falls man es doch versucht, erhält
man einen kleinen Hinweis).
Im Spiel werden die Spielsteine gelb und grün angezeigt. Die einzelnen
Spalten werden, wenn der Cursor auf ihnen ist, hervorgehoben sofern man
am Zug ist. Der Server teilt das Ende des Spiels mit, indem er die
Nachricht "Ein schönes Spiel,oder?" in "Sie haben gewonnen", "Sie
haben verloren", "Die Bank gewinnt alles" (dies, falls kein Stein mehr
in eine Spalte geworfen werden kann) abändert. Die Spieler verbleiben
solange in diesem finalen Zustand, bis einer sich entweder abmelden oder
sich erneut amelden.
Nun noch ein Bild mitten aus dem Spiel gegriffen:
Und so sieht es aus, wenn sich zwei unterhalten. Man selbst bekommt
eine Farbe zugeordnet, alle anderen eine andere.
Weitere Details sind der Dokumentation
zu entnehmen. Hier werden auch des besseren Verständnisses halber
die wichtigen privaten Methoden aufgeführt.
Das Clientprogramm ist in ein Panel eingebettet. Das heißt man
kann es wie in ein Applet in einen Frame einbinden. Der Server läuft
nur im Textmodus und gibt in diesem allerlei Kontrollnachrichten aus.
|