Spielmanager und Spieler kennen sich gegenseitig
Zielsetzung
Bisher haben wir das Spiel Elf-hoch immer in einer etwas vereinfachten Version gespielt. Wir haben darauf verzichtet, dass zu Beginn des Spiels und nachdem einer der Spieler die Kasse mit einem 11er-Wurf leergeräumt hat jeder Spieler eine Marke in die Kasse zahlen muss.
Im Folgenden soll das Spiel nach den normalen Spielregeln duchgeführt werden..
Wer kennt wen?
Im bisher entwickelten Modell war es so,
dass das Spielmanager
-Objekt alle Spieler
-Objekte kennt.
Es war aber nicht erforderlich, dass die Spieler
-Objekte das
Spielmanager
-Objekt kennen.
Eine Möglichkeit zur Realisierung des Elf-hoch-Spiels nach den normalen Spielregeln
besteht darin, dass nachdem ein Spieler mit einem 11er-Wurf die Kasse leergeräumt hat,
dieser Spieler den Spielmanager beauftragt, von jedem Spieler erneut einen Einsatz einzufordern.
Bei dieser Realisierung muss jedes Spieler
-Objekt das Spielmanager
-Objekt
kennen, um ihm die passende Nachricht schicken zu können.
Wir erweitern unser Modell in der Weise,
dass das Spielmanager
-Objekt und die Spieler
-Objekte sich
gegenseitig kennen.
Im Klassendiagramm wird die Beziehung zwischen einem Spielmanager
-Objekt und
einem Spieler
-Objekt jetzt bidirektional (d.h. in zwei Richtungen weisend)
dargestellt. Im Klassendiagramm sind auch bereits weitere Methoden aufgelistet.
Mit der Methode einsatzZahlen
wird ein Spieler
-Objekt
aufgefordert, eine Marke aus seiner eigenen Kasse in die Spielkasse zu übergeben.
Die Methode einsaetzeEinfordern
der Spielermanager
-Klasse
dient dazu, alle Spieler
-Objekte aufzufordern, ihre Methode
einsatzZahlen
auszuführen.
Die Methode setSpielmanager
der Spieler
-Klasse dient dazu,
ein Spieler
-Objekt mit dem Spielermanager
-Objekt zu verbinden.
Beachte, dass die Hin- und Rück-Referenzen zwischen dem Spielermanager
-Objekt
und einem Spieler
-Objekt erst gesetzt werden können, wenn die betreffenden Objekte
erzeugt sind. Der folgende Quelltext zeigt, wie das umgesetzt werden könnte.
w1 = Wuerfel() w2 = Wuerfel() k = Kasse(0) sp1 = Spieler('Winner', 100, w1, w2, k) sp2 = Spieler('Looser', 100, w1, w2, k) sp3 = Spieler('Zitterhand', 100, w1, w2, k) m = Spielmanager(sp1, sp2, sp3) sp1.setSpielmanager(m) sp2.setSpielmanager(m) sp3.setSpielmanager(m) m.einsatzEinfordern() print(sp1.getMarken(), sp2.getMarken(), sp3.getMarken()) m.spielrundeDurchfuehren() print(sp1.getMarken(), sp2.getMarken(), sp3.getMarken())
Aufgabe 1
Entwickle und teste eine Implementierung des veränderten Elf-hoch-Modells.