Sie sind auf Seite 1von 4

Prof. Dr. H.

Grönniger

F. Morgenstern, M. Sc.

Fakultät Informatik

SS21 Programmieren
Laboraufgabe 1

 CamelUp 
Ziel des Labors ist, dass Sie Methoden und Techniken zum Erstellen von mittelgroÿen
Java-Programmen praktisch beherrschen. Dazu realisieren Sie als Semesteraufgabe die Si-
mulation des Brettspiels CamelUp, Spiel des Jahres 2014.

In CamelUp geht es um Kamelrennen in der Wüste. Der Verlauf eines Kamelrennens wird
durch Würfeln bestimmt. Die Spieler können den Rennverlauf durch das Legen von Wü-
stenplättchen beeinussen. Ziel des Spiels ist, möglichst früh eine Kamelwette abzugeben,
d.h. auf das Sieger- bzw. Verlierer-Kamel des Rennens zu setzen. Die Spielanleitung können
Sie hier nachlesen:
ˆ (deutsch)
https://gesellschaftsspiele.spielen.de/uploads/files/798/
54da225b146bd.pdf
ˆ (englisch)
https://www.fgbradleys.com/rules/rules2/CamelUp-rules.pdf
Die Simulation ist gemäÿ der Regeln für das Spiel zu implementieren.
Zusätzlich präzisieren wir die Spielregeln wie folgt:
ˆ Die Methode startPosition ersetzt in der Spielvorbereitung die Regel 9 zur anfäng-
lichen Positionierung der Kamele auf dem Spielfeld. Sie kann auch zur Positionierung
von Kamelen auf beliebigen Feldern der Rennstrecke genutzt werden, die in einem
String-Array übergeben werden.
ˆ Das Spiel endet, wenn der erste Kamel-Stapel die Ziellinie überschreitet. Nach dem
Überschreiten der Ziellinie stoppt dieser Stapel - unabhängig von der gewürfelten
Zahl auf dem Feld 1, und es sind keine weiteren Züge mehr möglich.

1 Abnahme: 20.04.2021
Prof. Dr. H. Grönniger

F. Morgenstern, M. Sc.

Fakultät Informatik

SS21 Programmieren  Laboraufgabe 1

Das Kamelrennen
Die Klassenstruktur für Ihre Spielsimulation erarbeiten Sie selbst.

Aufgabenstellung
Die Vorgaben für Ihre Implementierung sind wie folgt:

ˆ Es gibt eine Klasse Pyramide, welche als Singleton zu


entwickeln ist. Singleton sind Klassen, von denen nur
ein einziges Objekt existieren kann bzw. soll, welche
üblicherweise global verfügbar ist. Dabei müssen min-
destens folgende Methoden implementiert werden: Die
Klassenmethode getInstance() erstellt die Würfelpy-
ramide mit zufälligen Werten,
Die Objektmethode initialisiere(String...) be-
kommt die Würfel als variable Argumentenliste (in der
Form "FARBE:Augenzahl", "FARBE:Augenzahl", . . . )
und wandelt den Text um, so dass die Pyramide mit
den beschriebenen Würfeln initialisiert ist, eventuell
noch vorhandene "Altwerte" werden dabei überschrie-
ben.
Die Methode anzahlWuerfel() gibt die Anzahl der
Würfel zurück, die noch in der Pyramide vorhanden
sind.
ˆ Es gibt eine Klasse CamelUp, welche die Spiellogik
rapräsentiert. CamelUp implementiert das Interface
ICamelUp, d.h. die Klasse realisiert:
CamelUp(Charakter...): bekommt als optionalen Pa-
rameter die am Spiel beteiligten Charaktere. Alle Ka-
mele benden sich erstmal auf Position 0 (also auÿer-
halb der Rennstrecke).
startPosition(): bringt die Kamele in die Startposi-
tion auf der Rennstrecke;
startPosition(String...): bringt die Kamele in die angegebene Stellung auf der
Rennstrecke (in der Form "FARBE:Feldnummer", "FARBE:Feldnummer", . . . );
bewegeKamel(Charakter): bewegt ein Kamel je nach Würfelergebnis, nach den in
der Spielanleitung denierten Regeln.
Implementieren Sie dazu das Interface ICamelUp. Die Klassen implementieren Sie im
Package de.ostfalia.prog.s21ss.s1.model.

Wir stellen neben dem Interface auch zwei Enumeration Typen zur Verfügung im Paket
de.ostfalia.prog.s21ss.s1.base:

2
Prof. Dr. H. Grönniger

F. Morgenstern, M. Sc.

Fakultät Informatik

SS21 Programmieren  Laboraufgabe 1

1. den Aufzählungstyp (engl. enumerati-


on type) namens Farbe, der die Kamel-
bzw. Würfelfarben nach den Begrien
BLAU, GRUEN, GELB, ORANGE und WEISS de-
niert.
2. den Aufzählungstyp namens Charakter,
der die Charaktere der Spielguren nach
den Begrien LADY, PRINZESSIN, MAEDCHEN,
DAME, SCHEICH, HAENDLER, GENTLEMAN und
ABENTEURER deniert.

Aufgabe 1 (Das Kamelrennen)


In dieser Aufgabe geht es um die Implementierung des Kamelrennens. Das Wettgeschäft
wird erst in der nächsten Aufgabe betrachtet. Für die erste Abnahme sollten Sie Kamele
auf der Rennstrecke plazieren, mit Hilfe der Pyramide würfeln und die Kamele gemäÿ der
Regeln (also korrekt gestapelt) auf der Rennstrecke nach vorne bewegen können.
ˆ Entwerfen Sie eine Klassenstruktur für die verschiedenen Elemente des Spiels.

ˆ Für die Abnahme muss Ihr Programm in der Lage sein,

 die Kamele in die Startposition zu positionieren und weiter zu bewegen anhand


von zufällig geworfenen Würfeln;
 die Kamele aufeinander zu stapeln und nur Teile des Stapels zu bewegen, wie
in den Regeln beschrieben;
 die Rennstrecke mit den Kamelen auf der Konsole auszugeben;
 mindestens eine vollständige Etappe muss gemäÿ der Regeln spielbar sein.
ˆ Beschreiben Sie Ihre Klassenstruktur durch ein UML-Diagramm, das Sie bei der
Abgabe erläutern.
ˆ Speichern Sie Ihr Projekt im SVN.

Implementierungshinweise
Die Programmierung soll mit Java erfolgen. Für Ihre selbstgeschriebenen Tests verwenden
Sie bitte eine eigene Klasse im Unterpaket test. Projekt- und Paketnamen sind für die
automatischen Tests vorgegeben:
ˆ Verwenden Sie für alle Aufgaben als Zeichenkodierung UTF-8.

ˆ Projektname ist ProgSS21Si, wobei i die Nummer der Aufgabe ist, also i ∈ {1, 2, 3, 4}.

ˆ Im Paket de.ostfalia.prog.s21ss.si.base liegen die von uns vorgegebenen Enums


und Schnittstellen.
ˆ im Paket de.ostfalia.prog.s21ss.si.model implementieren Sie Ihre Klassen.

3
Prof. Dr. H. Grönniger

F. Morgenstern, M. Sc.

Fakultät Informatik

SS21 Programmieren  Laboraufgabe 1

ˆ Alle zur Verfügung gestellten Klassen und Dateien nden Sie als zip-Archiv in Mood-
le.
ˆ Zum Hochladen Ihrer Lösung verwenden Sie bitte das svn-Verzeichnis https://code.
ostfalia.de/svn/i-prog-ss2021/GruppeXXX/.