Walking skeleton through Swing GUI: YAML-driven world (4 rooms, 4 items, 1 NPC), HashMap command dispatch with parser, three-tier item hierarchy (readable / switchable / plain), and end-to-end NPC give/receive flow. 67 tests green.
34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# Semesterprojekt – Textadventure
|
||
|
||
Design- und Architekturdokumentation. Dient als Spec während der Implementierung.
|
||
|
||
## Inhalt
|
||
|
||
| Datei | Inhalt |
|
||
|---|---|
|
||
| [architecture.md](architecture.md) | Package-Struktur, Schichten, DTO-vs-Domain-Trennung |
|
||
| [conventions.md](conventions.md) | Sprache, ID-Format, Naming, Lombok-Cheatsheet |
|
||
| [data-structures.md](data-structures.md) | Alle gewählten Collection-Typen mit Begründung |
|
||
| [item-model.md](item-model.md) | Item-Hierarchie (abstract + 3 Subtypen), Lombok-Inheritance |
|
||
| [yaml-schemas.md](yaml-schemas.md) | Schemas für `items.yaml`, `rooms.yaml`, `npcs.yaml`, `game.yaml` |
|
||
| [loading-flow.md](loading-flow.md) | Lade-Reihenfolge, Referenz-Auflösung, Validierung |
|
||
| [commands.md](commands.md) | Befehlsparser, Command-Pattern, Befehlsliste |
|
||
| [npcs.md](npcs.md) | NPC-Modell, Talk- und Give-Interaktion |
|
||
| [implementation-status.md](implementation-status.md) | Aktueller Stand, Phasen-Checkliste, festgelegte Entscheidungen |
|
||
|
||
## Pflicht vs. Optional (laut Aufgabenstellung)
|
||
|
||
- **Pflicht:** ≥4 Räume mit Navigation, ≥3 Gegenstände mit Inventar
|
||
- **Optional/Bonus:** NPCs, Swing-GUI
|
||
|
||
Beide optionalen Teile sind hier eingeplant.
|
||
|
||
## Technologie-Stack
|
||
|
||
- Java 25
|
||
- Jackson (YAML) für Daten-Loading
|
||
- Lombok für Boilerplate-Reduktion
|
||
- JUnit 5 + AssertJ + Mockito für Tests
|
||
- Logback + SLF4J für Logging
|
||
- Swing für GUI (Bonus)
|