{
"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- Es fehlen die geforderten Klassen `StupidAlgorithm`, `TryStraightFirst` und `BacktrackingAlgorithm`, die das Interface `NaviAlgorithm` implementieren.\n- In `LabyrinthApp` wird bei `NaviAlgorithm navi = null; // TODO` kein Algorithmus-Objekt erzeugt und verwendet; damit greift das Programm nicht wie verlangt auf einen Navigations-Algorithmus zurück.\n- Die Aufgabe verlangt, dass `StupidAlgorithm` in einer `while`-Schleife geradeaus läuft, bis das Ziel erreicht ist; eine solche `navigate`-Implementierung ist in deinem Versuch nicht vorhanden.\n- Die geforderte Logik von `TryStraightFirst` (ahead prüfen, sonst links/rechts, sonst umkehren) ist nicht implementiert.\n- Der geforderte allgemeine `BacktrackingAlgorithm` für die letzten Levels ist nicht implementiert.\n\n### Suggestion\n- Erstelle zuerst eine neue Klasse im gleichen Package, die `NaviAlgorithm` implementiert, und konzentriere dich nur auf `navigate(Figure figure)`; nutze darin ausschließlich die Methoden aus `Figure` (turn/move/path/isGoalReached).\n- Wenn du `StupidAlgorithm` umsetzt: Überlege dir, welche Bedingung deine `while`-Schleife haben muss, damit sie beim Ziel sauber stoppt, und welche einzelne Bewegung pro Durchlauf passieren soll.\n- Für `TryStraightFirst`: Formuliere die Entscheidungen als klare Prioritäten-Kette (zuerst “ahead?”, dann “left?”, dann “right?”, sonst umdrehen). Achte darauf, dass “umdrehen” tatsächlich eine 180°-Drehung ist (also nicht nur einmal drehen).\n- Für `BacktrackingAlgorithm`: Du brauchst eine Möglichkeit, dir Abzweigungen/Entscheidungen zu merken und bei Sackgassen zur letzten Abzweigung zurückzukehren (z.B. über einen Stack oder eine gespeicherte Folge von Schritten/Turns).\n- In `LabyrinthApp` muss bei `TODO` wirklich ein konkretes Objekt deiner Algorithmus-Klasse erzeugt werden, sonst wird `navigate` nie aufgerufen.\n\n### Code Style\n- In deinem Commit ist sehr viel Template-Code unverändert enthalten, aber keine der eigentlich geforderten neuen Klassen/Dateien; achte darauf, nur deine relevanten Änderungen/Ergänzungen mit abzugeben (bzw. die neuen Dateien wirklich zu erstellen und einzureichen).\n- `LabyrinthApp`: Ein `null` als Platzhalter ist ok während dem Entwickeln, sollte aber für die Abgabe durch eine echte Instanz ersetzt werden, damit man das Verhalten direkt testen kann.\n\n\n# Exercise: swissmap\n\n### Correctness\n- `SwissMapApp.main` ist nicht als Einstiegspunkt verwendbar: Die Signatur ist `void main()` statt `public static void main(String[] args)`, dadurch startet das Programm in der Regel nicht.\n- `ModeButton` erfüllt die Anforderung aus Teil (d) nicht: Beim Klick wird der Satellitenmodus nicht umgeschaltet, es fehlt die Referenz auf das `SwissMap`-Objekt, und es wird aktuell nichts gezeichnet bzw. keine Interaktion angeboten (`getInteractiveArea` liefert `null`).\n- Der `ModeButton` wird in der `main`-Methode nicht erstellt und nicht mit `gui.addComponent(...)` registriert (Teil d).\n- Für Hover-Interaktion muss `getInteractiveArea` einen sinnvollen Bereich zurückgeben; bei `ModeButton` ist das derzeit `null`, wodurch `onMouseEnter/Exit` und Klicks nicht zuverlässig funktionieren können.\n\n### Suggestion\n- Schau dir die erforderliche `main`-Methode in Java an (Zugriffsmodifizierer, `static`, Parameter), damit dein Programm überhaupt ausgeführt wird.\n- Für den `ModeButton`: Überlege dir, welche Information der Button braucht, um den Modus der Karte ändern zu können (Stichwort: Referenz auf das `SwissMap`-Objekt im Konstruktor) und welche Methode der Karte du dann in `onLeftClick` auslösen musst.\n- Gib dem `ModeButton` einen konkreten interaktiven Bereich (z. B. ein `Rectangle` an einer festen Position im Fenster), sonst kann die GUI keine Hover-/Click-Events diesem Button zuordnen.\n- Vergiss nicht, das Button-Objekt in `SwissMapApp` tatsächlich zu erzeugen und via `gui.addComponent(...)` hinzuzufügen, sonst wird es nie gezeichnet/bedient.\n\n### Code Style\n- Die Aufrufe `l.getInteractiveArea(gui);`, `m.getInteractiveArea(gui);`, `c.getInteractiveArea(gui);` in `SwissMapApp` sind wirkungslos (Rückgabewert wird ignoriert); das Event-System ruft diese Methode selbst auf, wenn nötig.\n- In `City.draw` zeichnest du erst den Text (nur bei Hover) und danach immer den Punkt; je nach gewünschtem Look wäre es oft lesbarer, Text mit Offset zu zeichnen (nicht direkt auf denselben Koordinaten).\n- In `Lake`/`Mountain`: `import static ch.fhnw.prog1.exercise.swissmap.SwissMap.*;` macht es schwerer nachzuvollziehen, wo `WIDTH/scale/BG_PIXEL_WIDTH` herkommen; explizite Qualifizierung kann hier die Lesbarkeit erhöhen.\n- `ModeButton` enthält viele leere Methoden und `getInteractiveArea` gibt `null` zurück; solange das unvollständig ist, besser als klarer Platzhalter kommentieren oder minimal lauffähig machen, damit du testen kannst.\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"
}
}