Spielelogik
Klassendiagramm
Um das Spiel zu spielen benötigen wir eine Klasse, welche die Spielelogik
enthält und den Benutzer führt.
Lässt man die hier nicht mehr relavanten Teile der Klassen Warteschlange
und Person
weg, ergibt sich insgesamt folgendes Klassendiagramm (kein UML sondern Java-spezifisch):
Beim Erzeugen des Spiels soll die Zahl der Kinder, die gleichzeitig auf
einen Baumstamm passen, angegeben werden.
Diese Zahl wird im Attribut breite
gespeichert.
Außerdem wird eine Warteschlange erzeugt und diese als stamm
referenziert.
Die Methode leseString
liest eine Benutzereingabe ein.
Dies wird zur Eingabe der Namen der Personen auf dem Stamm benötigt.
Du kannst die Methode einfach übernehmen. Verstehen musst Du sie nicht.
String leseString() {
return new java.util.Scanner(System.in).nextLine();
}
Aufgabe 1 - Spiel-Klasse
Erstelle eine neue Klasse Spiel
in Deinem Projekt.
Implementiere die notwendigen Attribute, den Konstruktor und die Methode
leseString
.
class Spiel {
Warteschlange stamm;
int breite;
Spiel(int kinderzahl) {
stamm = new Warteschlange();
breite = kinderzahl;
}
String leseString() { return new java.util.Scanner(System.in).nextLine(); }
}
Startbelegung
Zu Beginn des Spiels sollen die Spieler reihum die Namen der Personen eingeben,
die auf dem Stamm stehen, bis dieser voll belegt ist.
Die Methode startBelegungEingeben
soll also in einer Schleife
so oft einen neuen Namen abfragen und die Personen auf dem Stamm platzieren
bis dieser voll belegt ist.
Aufgabe 2 - startBelegungEingeben
Implementiere die Methode und teste sie mit Hilfe des Objektinspektors wie im Film dargestellt.
Wiederhole breite mal:
Gib aus: "Gib bitte einen Namen ein:"
Lies einen Namen ein und speichere ihn in einer lokalen Variablen
Erzeuge eine neue Person mit dem eingegebenen Namen und füge diese dem Stamm hinzu
Tipp überprüfen
Um zu überprüfen, ob ein Tipp mit dem Namen der vordersten Person auf dem Stamm übereinstimmt, kann man einige lokale Variablen benutzen oder einen etwas komplexeren Ausdruck formulieren:
boolean tippIstRichtig(String tipp) {
if(stamm.gibErstePerson().name.equals(tipp))
return true;
else
return false;
}
Aufgabe 3 - tippIstRichtig
Erkläre wie der logische Ausdruck in der if-Anweisung zustandekommt.
Ergänze die Methode und teste sie.
Zusatzaufgabe: Schreibe die Methode mit Hilfe lokaler Variablen um, so dass
in der Bedingung nur noch name.equals(tipp)
steht.
Spielen
Schließlich fehlt nur noch die Methode zur Durchführung des eigentlichen Spiels. Der Spieler, der an der Reihe ist, muss nun den Namen der vordersten Person auf dem Stamm tippen. Gelingt ihm dies, wird diese entfernt und eine neue Person hinzugefügt. Der Name der neuen Person wird vom Spieler eingegeben. Dies wird so lange wiederholt bis ein Spieler einen falschen Namen eingibt. Hinweis: Durch Ausgabe der Zeichenkette "\f" kann man die Ausgabe löschen. (Sonderzeichen für "form feed" also Seitenvorschub auf einer Schreibmaschine) Schließlich sollen die alten Namen ja nicht mehr zu sehen sein.
Aufgabe 4 - Spielen
Implementiere die Methode spielen
, so dass alle Ein-
und Ausgaben automatisch gesteuert werden.