# Semesterprojekt – Textadventure Design- und Architekturdokumentation. Bedienung und Build stehen im [Haupt-README](../README.md). ## Inhalt | Datei | Inhalt | |---|---| | [architecture.md](architecture.md) | Package-Struktur, Schichten, DTO-vs-Domain-Trennung | | [data-structures.md](data-structures.md) | Alle gewählten Collection-Typen mit Begründung | | [conventions.md](conventions.md) | Sprache, ID-Format, Naming, Lombok-Cheatsheet | | [item-model.md](item-model.md) | Item-Hierarchie (abstract + 3 Subtypen), Lombok-Inheritance | | [commands.md](commands.md) | Befehlsparser, Command-Pattern, Befehlsliste | | [npcs.md](npcs.md) | NPC-Modell, Talk- und Give-Interaktion | | [yaml-schemas.md](yaml-schemas.md) | Schemas der YAML-Dateien unter `resources/world/` | | [loading-flow.md](loading-flow.md) | Lade-Reihenfolge, Referenz-Auflösung, Validierung | | [music.md](music.md) | Hintergrundmusik in der GUI (Bonus) | ## Pflicht vs. Optional (laut Aufgabenstellung) - **Pflicht:** ≥ 4 Räume mit Navigation, ≥ 3 Gegenstände mit Inventar — erfüllt mit 14 Räumen und 19 Gegenständen. - **Optional/Bonus:** NPCs (3) und Swing-GUI — beides umgesetzt. Welche Klasse welche Anforderung umsetzt, steht als Tabelle im [Haupt-README](../README.md). ## Technologie-Stack - Java 21 (LTS) - Jackson (YAML) für das Laden der Spielwelt - Lombok zur Reduktion von Boilerplate - JUnit 5 + AssertJ + Mockito für Tests - SLF4J + Logback für Logging - Swing für die GUI (Bonus)