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.


26. Januar 2001 - Markus Mattes und Sebastian Seyrich
Impressum und Datenschutz