{
"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\n### Correctness\n- `BacktrackingAlgorithm`: Du rufst innerhalb der `while`-Schleife immer wieder `navigate(figure)` rekursiv auf. Dadurch endet die Methode praktisch nie “normal”, sondern baut einen immer tieferen Rekursions-Stack auf (bis zum StackOverflow), statt iterativ/backtracking-mässig zu steuern.\n- `BacktrackingAlgorithm`: Wenn weder `pathAhead()`, noch `pathToTheLeft()`, noch `pathToTheRight()` gilt, machst du gar nichts (kein Umdrehen/Zurückgehen) und rufst dann trotzdem rekursiv `navigate` auf → Endlosrekursion ohne Zustandsänderung.\n- `TryStraightFirst`: Die Anforderung “wenn vorne nicht geht, links oder rechts versuchen, sonst rechtsum kehrt” ist bei dir nicht erfüllt, weil du bei “rechtsum kehrt” nur einmal `turnRight()` machst (90° statt 180°).\n- `TryStraightFirst`: Im “sonst”-Fall rufst du wieder `navigate(figure)` rekursiv auf. Das ist für diesen Algorithmus nicht verlangt und führt ebenfalls zu unnötig tiefer Rekursion statt sauberer Schleifenlogik.\n- `BacktrackingAlgorithm`: Der Algorithmus implementiert kein Backtracking im Sinn der Aufgabe (Entscheidungspunkte merken und bei Sackgassen gezielt zurück), sondern ist im Kern eine Variante von “TryStraightFirst” mit Rekursion.\n\n### Suggestion\n- Überlege dir bei beiden Algorithmen: Brauchst du überhaupt Rekursion, wenn die Aufgabe explizit mit “in jedem Schleifendurchlauf …” und Backtracking-Logik arbeitet? Versuch die komplette Steuerung in *einer* Schleife zu halten.\n- Für “rechtsum kehrt”: Überprüfe, wie viele `turnRight()`-Aufrufe nötig sind, damit die Figur wirklich in die entgegengesetzte Richtung schaut.\n- Für Backtracking: Überleg dir, was du speichern musst, damit du nach einer Sackgasse wieder *zu einer früheren Kreuzung* zurückkommst und dort einen anderen Weg probierst (z.B. Position+Richtung oder “Entscheidung” an Kreuzungen).\n- Teste gedanklich den Fall “Sackgasse”: Welche Aktionen müssen passieren, damit sich die Situation ändert (und du nicht in einer Schleife/Rekursion ohne Bewegung hängenbleibst)?\n\n3. Code Style:\n- In `TryStraightFirst` sind die Variablen `right` und `left` unbenutzt; entweder verwenden oder entfernen.\n- Rekursion innerhalb von `navigate()` macht das Verhalten schwer nachvollziehbar; selbst wenn du Rekursion einsetzen willst, wäre klarere Trennung zwischen “ein Schritt” und “ganzer Lauf” hilfreich.\n\n\n# Exercise: swissmap\n\n### Correctness\n- In `ModeButton.getInteractiveArea(...)` ist die Fläche (15x15) deutlich kleiner als das, was du zeichnest (65x25). Dadurch sind Teile des Buttons nicht klick-/hoverbar, obwohl sie sichtbar sind.\n- In `Lake.draw(...)` und `Mountain.draw(...)` verwendest du als Skalierung `WIDTH * scale(gui) / BG_PIXEL_WIDTH`. Das ist die Hintergrund-Skalierung der ganzen Schweizkarte; für Icon-Bilder führt das typischerweise zu falschen (viel zu grossen) Symbolgrössen und damit nicht zur geforderten Darstellung „wie oben“.\n- Deine Bildpfade (`swissmap_img/...`) passen nicht zu den im Aufgaben-Template/Tipps erwähnten Ressourcenpfaden (z.B. `swissmap/...`). Wenn der Ordner/Name im Projekt nicht genau so existiert, werden die Bilder nicht angezeigt.\n\n### Suggestion\n- Überlege beim Button: Welche Rechteckfläche deckt exakt den gezeichneten Button ab? Nimm dieselbe Position und dieselben Breite/Höhe für `getInteractiveArea(...)`, die du auch in `draw(...)` verwendest.\n- Für Berge/Seen: Icons sollten meist eine feste Pixelgrösse haben (oder nur leicht mit der Karte skalieren), aber nicht mit der *gesamten* Kartenbreite. Schau dir an, was der Parameter bei `drawImage(...)` genau bedeutet (Skalierungsfaktor vs. Breite) und leite daraus eine passende, objektbezogene Skalierung ab.\n- Prüfe, wie die Ressourcen im Template referenziert werden (z.B. in `SwissMap.draw(...)`) und gleiche deine Pfade daran an. Wenn du einen eigenen Ordner nutzen willst, muss er im Ressourcenpfad auch wirklich so vorhanden sein.\n\n### Code Style\n- Entferne Debug-Ausgaben in Render-/Event-Methoden (`System.out.println(...)` in `SwissMap.draw` und `City.onMouseEnter`), weil das bei jedem Frame/Event sehr viel Output erzeugt.\n- In `ModeButton` sind Felder wie `clicked` und `hovered` aktuell ohne Effekt im `draw(...)` (keine optische Änderung). Entweder nutzen (z.B. für Highlight) oder weglassen.\n- In `Mountain` und `SwissMap` hast du Imports für `ImageIO`, `BufferedImage`, `IOException`, `Objects`, die du nicht verwendest. Diese Imports entfernen.\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"
}
}