Blatt 04: Calculator und DevDungeon (Lambda-Ausdrücke)
(1 Punkt)
Ihr Code soll einheitlich formatiert und dokumentiert sein. Sie können beides prüfen:
./gradlew spotlessCheck
für die Formatierung und ./gradlew checkstyleMain
für die
Dokumentation1 mit Javadoc.2 Während Sie die Dokumentation bei Fehlern manuell anpassen
müssen (siehe Lektion “Javadoc”), können Sie mit ./gradlew spotlessApply
den Code
automatisch formatieren lassen - tun Sie das am besten vor jedem Commit.
A04.1: Javadoc-Kommentare (10%)
Gute Javadoc-Kommentare schreiben erfordert Übung. Schauen Sie sich die in Commit Dungeon-CampusMinden/Dungeon/commit/46530b6 neu hinzugefügte Datei code/core/src/controller/ControllerLayer.java an.
Diskutieren Sie jeweils, was Ihnen an der Dokumentation dieser Klasse auffällt: Was gefällt Ihnen, was stört Sie? Schlagen Sie Verbesserungen vor.
A04.2: Anonyme Klassen und Lambda-Ausdrücke (40%)
Klonen Sie die Vorgaben "Calculator" und laden Sie das Projekt als Gradle-Projekt in Ihre IDE.
Im Package calculator
finden Sie einige Interfaces und Klassen, mit denen man einen
einfachen Taschenrechner modellieren kann: Dieser kann einfache mathematische Operationen auf
zwei Integern ausführen.
In der Klasse calculator.Calculator
finden Sie vier mit TODO
markierte Stellen in der
Methode setupOperationSelector
:
- Erstellen Sie eine neue Java-Klasse
Sub
, die das InterfaceOperation
implementiert und eine Subtraktion bereitstellt. Erweitern Sie denCalculator
und binden Sie eine Instanz dieser Klasse ein. Nutzen Sie hier keine anonymen Klassen oder Lambda-Ausdrücke. - Erstellen Sie eine weitere Operation "Mul" (Multiplikation von zwei Integern). Nutzen Sie dazu eine passende anonyme Klasse.
- Erstellen Sie eine weitere Operation "Div" (Integerdivision). Erstellen Sie einen passenden Lambda-Ausdruck.
- Für die
JComboBox
operationSelector
wird einActionListener
mit Hilfe einer anonymen Klasse definiert. Konvertieren Sie dies in einen entsprechenden Lambda-Ausdruck.
A04.3: DevDungeon: Zerbrechende Tiles und Speed Potions (50%)
Klonen Sie das Projekt DevDungeon und laden Sie es in Ihrer IDE als Gradle-Projekt. Betrachten Sie das Sub-Projekt "devDungeon". Dies ist ein von einem Studierenden (@Flamtky) erstelltes Spiel mit mehreren Leveln, in denen Sie spielerisch verschiedene Aufgaben in-game und ex-game lösen müssen.
Starten Sie den DevDungeon mit ./gradlew devDungeon:runDevDungeon
. Spielen Sie sich für
diese Aufgabe durch das erste Level ("Damaged Bridge")3.
Ziel ist es, die mysteriöse Brücke in der Mitte des ersten Levels lebendig zu überqueren.
Beobachten Sie die Startsequenz: Was fällt ihnen an dem Monster auf, dass Sie ganz am Anfang
angreifen will? Sie finden weitere Hinweise in den Briefkästen und über die Popups ...
Beachten Sie auch die Hinweise am versteckten Item. Um dieses nutzbar zu machen, müssen Sie in
den Java-Code des Spiels gehen (im src/
-Unterordner im Sub-Projekt "devDungeon") und den
Effekt für das Item reparieren (implementieren). Analysieren Sie den Code für das Item und
seinen Effekt, und schauen Sie sich die anderen Effekte im selben Package an. Schreiben Sie
nun Code für die mit "TODO" markierte Methode des Effekts. Starten Sie dann das Spiel neu und
schauen Sie, ob das Item nun funktioniert.
WICHTIG: Bevor Sie mit der Implementierung beginnen, schauen Sie sich bitte die Einführung in die Programmierung des Dungeons und die verwendete Entity-Component-System-Architektur in der Lektion Intro Dungeon an. Dort werden Ihnen Hintergründe zum Dungeon und der für diese Aufgabe relevanten Component erklärt.
Hinweis: Sie können das Demo-Level deaktivieren, indem Sie in der Klasse
starter.DevDungeon
das Flag SKIP_TUTORIAL
auf den Wert true
setzen. Damit gelangen Sie
direkt in das in dieser Aufgabe relevante Level.
Hinweis: Aktuell ist das Projekt DevDungeon an einigen Stellen noch Work-in-Progress,
beispielsweise fehlt häufig noch die Javadoc. Alle Gradle-Tasks, die von Checkstyle-Tasks
abhängen (checkstyleMain
, check
, build
, ...) werden deshalb fehlschlagen. Sie können den
DevDungeon aber wie oben beschrieben mit ./gradlew devDungeon:runDevDungeon
(bzw. über den
Task devDungeon:runDevDungeon
aus der IDE heraus) starten.
WICHTIG: Achten Sie bitte darauf, dass im Projektpfad keine Leerzeichen und keine Sonderzeichen (Umlaute o.ä.) vorkommen! Dies kann zu seltsamen Fehler führen. Bitte auch darauf achten, dass Sie als JDK ein Java SE 21 (LTS) verwenden.
-
zumindest für den syntaktischen Aspekt ... ↩︎
-
Sie können auch beides zusammen per
./gradlew check
prüfen lassen. ↩︎ -
Das erste richtige Level, also das erste Level nach dem Demo-Level. Zur Erinnerung: Das Demo-Level hatte Ihnen in Blatt 02 gezeigt, wie Sie das Spiel bedienen können. Zusätzlich gibt es die kurze Anleitung "How to play" ... ↩︎