{
"llm" : {
"feedback" : "# Exercise: parking\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: labyrinth\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: swissmap\n\n### Correctness\n- `Lake` und `Mountain` implementieren nicht `Hoverable`, obwohl in Teil (c) alle drei Klassen (`City`, `Lake`, `Mountain`) hoverbar sein sollen.\n- Bei `City` wird die Beschreibung bei Hover nicht in der GUI angezeigt (Anforderung: “Beschreibung anzeigen” beim Draufzeigen). Ein `System.out.println(...)` erfüllt das nicht.\n- In `City.draw(...)` rufst du `onMouseEnter()`/`onMouseExit()` selbst auf, abhängig von der Mausposition. Das widerspricht dem vorgesehenen Konzept: Die GUI-Bibliothek ruft diese Methoden auf, wenn sich die Maus in den interaktiven Bereich hinein/raus bewegt.\n- `City.onMouseEnter()`/`onMouseExit()` merkt sich keinen Hover-Zustand und `draw(...)` nutzt keinen gespeicherten Zustand, um die Beschreibung ein-/auszublenden (so wie in der Aufgabenstellung beschrieben).\n- `ModeButton` (Teil d) fehlt komplett, damit gibt es keine Möglichkeit, den Satellitenmodus per Klick umzuschalten.\n- In `SwissMap.draw(...)` verwendest du für den normalen Modus einen anderen Bildpfad (`swissmap_img/Switzerland_map.png`) als vorgegeben. Wenn diese Resource nicht exakt so existiert, wird der Hintergrund nicht angezeigt (und damit Teil a/d nicht wie gefordert funktionieren).\n\n### Suggestion\n- Ergänze bei `Lake` und `Mountain` das `Hoverable`-Interface und überlege dir je ein passendes `Shape` für `getInteractiveArea(...)` (z.B. ein kleines Rechteck um das Icon).\n- Überlege, wie du eine Beschreibung “auf der Karte” zeichnen kannst: Du brauchst in `draw(...)` eine Textausgabe an einer Position, aber nur dann, wenn gerade gehovt wird.\n- Verlass dich auf das Event-System: Implementiere `getInteractiveArea(...)`, `onMouseEnter()`, `onMouseExit()` so, dass sie nur einen internen Zustand (z.B. boolean) ändern; und in `draw(...)` schaust du dann auf diesen Zustand.\n- Für Teil (d): Der Button muss `Clickable` sein und beim Linksklick den Satellitenmodus am `SwissMap`-Objekt umschalten. Dafür muss der Button eine Referenz auf die `SwissMap` bekommen (z.B. über den Konstruktor).\n- Prüfe, ob die Bildpfade exakt zu den vorhandenen Ressourcen passen (Ordnername/Dateiname). Wenn du abweichst, stelle sicher, dass die Dateien wirklich dort liegen, wo `drawImage(...)` sie erwartet.\n\n### Code Style\n- Unnötige Imports in `Mountain` und `SwissMap` (`ImageIO`, `BufferedImage`, `IOException`, `Objects`) werden nicht verwendet und sollten entfernt werden.\n- `import static ch.fhnw.prog1.exercise.swissmap.SwissMap.*;` in mehreren Klassen macht Abhängigkeiten weniger klar; gezielte Imports bzw. direkte Qualifikation verbessern Lesbarkeit.\n- In `City.onMouseEnter()` rufst du `getInhabitants()` und `getArea()` ohne Verwendung auf; das wirkt wie “toter” Code.\n- `hoover` ist als Name irreführend (Tippfehler zu `hover`), was die Lesbarkeit senkt.\n\n\n# Exercise: visualizer\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
"status" : "SUCCESS"
}
}