-
Erstelle eine Klasse Wuerfel und leite von ihr die Klasse ManipulierterWuerfel ab.
Die Klasse Wuerfel würfelt Zahlen zwischen 1 und 6, der manipulierte Würfel liefert nur die 6.
- Erstelle eine Klasse SchiedsrichterHamster als Erbe der Klasse Hamster.
Seine Aufgabe ist es, einen neuen Würfel zu erzeugen ...
Wuerfel liefereWuerfel()
{
return new Wuerfel();
}
- ... und mit diesem Würfel zu würfeln.
int zufallsZahl(Wuerfel wuerfel)
{
return wuerfel.zufallsZahl();
}
- Erstelle eine Klasse SpielHamster als Erbe der Klasse AllesKoennerHamster.
Erzeuge zunächst ein → Subobjekt der Klasse Wuerfel.
Wuerfel wuerfel;
Der → Konstruktor wird um einen Parameter erweitert ...
SpielHamster(int reihe, int spalte, int blickrichtung, int koerner, Wuerfel w)
{
super(reihe, spalte, Hamster.OST, 0);
this.wuerfel = w;
}
... der den Würfel übergibt.
Die Anzahl der Parameter innerhalb des Konstruktors muss mit der Klasse Hamster übereinstimmen.
- Jetzt fehlt noch eine Methode, die den spielHamster die gewürfelte Anzahl von Schritten vorwärts gehen lässt und eine Funktion, die den Würfel an den schiedsrichterHamster übergibt.
Wuerfel gibWuerfel()
{
return this.wuerfel;
}
- Der MogelHamster ist ein Erbe der Klasse spielHamster und im Konstruktor wird der Würfel gegen den manipulierten Würfel ausgetauscht.
this.wuerfel = new ManipulierterWuerfel();
- Im Hauptprogramm wird zunächst der SchiedsrichterHamster erzeugt.
Dieser erzeugt zwei neue Würfel:
Wuerfel wuerfel1 = markus.liefereWuerfel();
Wuerfel wuerfel2 = markus.liefereWuerfel();
- Die Würfel werden an die Spieler übergeben:
SpielHamster paul = new SpielHamster(0, 0,Hamster.OST, 0, wuerfel1);
SpielHamster willi = new MogelHamster(1, 0,Hamster.OST, 0, wuerfel2);
-
Der SchiedsrichterHamster würfelt mit dem ihm übergebenen Würfel:
Wuerfel spielWuerfel;
spielWuerfel = paul.gibWuerfel();
int zahlPaul = markus.zufallsZahl(spielWuerfel);
spielWuerfel = willi.gibWuerfel();
int zahlWilli = markus.zufallsZahl(spielWuerfel);
- Der SpielHamster mit der größeren Zahl darf vorrücken.
Verwende hierfür eine → überladene Methode vor() im AllesKoennerHamster.
if (zahlPaul > zahlWilli)
{
. . .
}
else if (zahlWilli > zahlPaul)
{
. . .
}