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.

Objektdiagramm

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.

Klassendiagramm

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.

X

Fehler melden

X

Suche