AutoFeedback API

Result a3f4f2f2-94d4-427a-ba74-81eb3d28e308

{
  "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- `SwissMapApp`: Die `main`-Methode hat die Signatur `void main()`. So wird sie als Java-Startpunkt nicht aufgerufen (erwartet wird eine echte `public static void main(String[] args)`-Methode).\n- `City` und `Lake` implementieren noch nicht `Drawable` und haben keine `draw(Gui)`-Methode, wie in b) verlangt.\n- In `SwissMapApp` werden die `City`-/`Lake`-/`Mountain`-Objekte nicht via `gui.addComponent(...)` hinzugefügt (b) ist damit nicht erfüllt).\n- `Mountain.draw(...)` zeichnet aktuell den Kartenhintergrund (und sogar mit `fillRect` den ganzen Screen) statt ein Berg-Symbol an der Position seines `coord` (b) ist dadurch fachlich falsch umgesetzt: Berge sollen “on top” der `SwissMap` erscheinen, nicht selbst die Map rendern).\n- c) ist nicht umgesetzt: `City`, `Lake`, `Mountain` implementieren nicht `Hoverable` (inkl. `getInteractiveArea`, `onMouseEnter`, `onMouseExit`) und zeigen keine Beschreibung beim Hover.\n- d) ist nicht umgesetzt: Es gibt keine `ModeButton`-Klasse, kein `Clickable`, und der Satellitenmodus wird nicht per Button-Klick umgeschaltet.\n\n### Suggestion\n- Schau dir die Signatur deiner Startmethode an: Überlege, welche Modifiers (`public`, `static`) und welcher Parameter-Typ nötig sind, damit Java die Methode automatisch als Einstiegspunkt findet.\n- Für b): Überlege für **jede** der Klassen `City`, `Lake`, `Mountain`, welches Interface verlangt ist und welche Methode das Interface zwingend fordert. Fang klein an: erst nur ein Punkt/Symbol an der richtigen Position zeichnen (mit `coord.toGuiX(gui)` / `coord.toGuiY(gui)`), ohne Text.\n- In `Mountain.draw`: Trenne klar zwischen “Hintergrund-Karte zeichnen” (Aufgabe von `SwissMap`) und “Objekt zeichnen” (Aufgabe von `Mountain`). Dein Berg sollte nicht das Fenster weiss füllen und nicht die Schweiz-Karte als Bild zeichnen, sondern nur sein eigenes Icon/Marker.\n- Damit man die Objekte wirklich sieht: In `SwissMapApp` musst du nach dem Erzeugen der Objekte auch tatsächlich alle als Komponenten registrieren. Denk daran: Ohne `addComponent` werden deren `draw`-Methoden nie aufgerufen.\n- Für c): Implementiere `Hoverable` so, dass du beim Rein-/Rausfahren der Maus nur einen Zustand (z.B. boolean “hovered”) setzt. Die Anzeige der Beschreibung passiert dann in `draw` abhängig von diesem Zustand.\n- Für `getInteractiveArea`: Nimm als ersten Schritt eine einfache `Rectangle` um die gezeichnete Position (z.B. Icon-Grösse) und passe sie dann an, bis das Hovering gut funktioniert.\n- Für d): Der Button muss eine Referenz auf das `SwissMap`-Objekt haben. Überlege dir, wo du diese Referenz herbekommst (du erzeugst `SwissMap map = new SwissMap();` bereits) und wie der Button beim Klick `map.setSatelliteMode(...)` umschalten kann (Toggle).\n\n### Code Style\n- In `Mountain` und `SwissMap` sind mehrere Imports unbenutzt (`ImageIO`, `BufferedImage`, `IOException`, `Objects`). Entferne sie, damit der Code übersichtlich bleibt.\n- `SwissMap.draw` enthält ein `System.out.println(getClass().getResource(...))` mit einem Pfad, der nicht zu den verwendeten `drawImage`-Pfaden passt; das wirkt wie Debug-Code und sollte aus der finalen Abgabe raus.\n- In `Mountain.draw` ist `String image; image = ...;` unnötig umständlich (kann in einer Zeile), und der Methodeninhalt kopiert Logik von `SwissMap` statt sich auf die Berg-Darstellung zu konzentrieren.\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"
  }
}