{
"llm" : {
"feedback" : "# Exercise: parking\n\n### Correctness\n- `GroupCard` verwendet für den Tarif `HOURLY_RATE` als `static` Feld: dadurch teilen sich alle `GroupCard`-Instanzen denselben Tarif und eine später erzeugte Karte kann den Tarif früherer Karten “mitverändern” (falsche Kostenberechnung, sobald mehrere GroupCards mit unterschiedlichen Personenzahlen existieren).\n- `FlatRateCard.cost()` liefert immer 150, unabhängig davon, ob überhaupt geparkt wurde; damit wird auch bei 0 Minuten Nutzung Umsatz generiert, was sehr wahrscheinlich nicht dem erwarteten Verhalten im Beispiel (Parkvorgänge sollen den Umsatz bestimmen) entspricht.\n\n### Suggestion\n- Überlege bei `GroupCard`, ob der Tarif wirklich klassenweit gelten soll oder ob er zur jeweiligen Karte gehören muss. Wenn jede Karte ihren eigenen Tarif hat, sollte eine andere Karte ihn nicht überschreiben können.\n- Prüfe bei `FlatRateCard`, wofür die 150 CHF stehen sollen (Monatskosten) und wie das mit `park(...)`, `cost()` und `reset()` im System zusammenspielt. Frage dich: Soll `cost()` pro Abrechnungsperiode einmalig anfallen oder bei jedem `calculateRevenueAndReset()` immer wieder? Und soll das auch passieren, wenn nie geparkt wurde?\n\n### Code Style\n- In `GroupCard` sind Parameter- und Variablennamen wie `Personen` unüblich großgeschrieben; nutze konsistente Java-Konventionen (camelCase, z.B. `personen` / `numberOfPeople`).\n- `HOURLY_RATE` in `GroupCard` ist nicht `final`, obwohl es konzeptionell wie eine Konstante wirkt; außerdem ist `static` hier besonders irreführend, weil es wie ein globaler Zustand funktioniert.\n- In `FlatRateCard` sind `park(...)` und `reset()` leer; selbst wenn das fachlich okay ist, wäre ein kurzer Kommentar sinnvoll, warum sie bewusst nichts tun.\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- Teil c) ist nicht vollständig umgesetzt: `City` und `Lake` implementieren noch nicht `Hoverable` (inkl. `onMouseEnter`, `onMouseExit`, `getInteractiveArea`), daher kann man bei diesen Objekten keine Beschreibung per Hover anzeigen.\n- Teil d) fehlt komplett: Die Klasse `ModeButton` (mit `Drawable`, `Hoverable`, `Clickable`) wird nicht implementiert/registriert und es gibt keinen Klick, der `setSatelliteMode(...)` auf dem `SwissMap`-Objekt toggelt.\n- Bei `Lake.draw(...)` ist die Skalierung/Grösse des Lake-Icons nicht passend gewählt: Du verwendest als Scale-Faktor die Hintergrund-Skalierung der ganzen Karte (basierend auf `SwissMap.WIDTH/BG_PIXEL_WIDTH`). Dadurch wird das Lake-Icon extrem gross/inkonsistent statt als kleines Icon an der Position zu erscheinen.\n\n### Suggestion\n- Schau dir für `City` und `Lake` die gleiche Struktur an, die du bei `Mountain` bereits hast: ein `hovered`-Flag, das in `onMouseEnter/Exit` gesetzt wird, und eine `getInteractiveArea(...)`, die einen sinnvollen Bereich um das gezeichnete Objekt zurückgibt.\n- Für den `ModeButton`: Überlege, welche Referenz der Button braucht, um den Modus der Karte zu ändern, und wie du bei einem Klick zwischen `true/false` wechseln kannst (ohne in `SwissMap` selbst klicken zu müssen).\n- Für die Seen: Miss/definiere eine feste Bildgrösse (in Pixeln) deines `lake.png` und skaliere dieses Icon ähnlich wie du es bei `Mountain` mit `IMG_W/IMG_H` machst, statt die Kartenbreite als Basis zu nehmen.\n\n### Code Style\n- In `Mountain.draw(...)` erzeugst du Variablen, die nicht genutzt werden (`double scale = imageScale(gui);` wird nachher nicht verwendet, weil du später nochmal `scale` deklarierst). Solche Dopplungen entfernen, damit der Code klar bleibt.\n- `Mountain` hat mehrere “Magic Numbers” für Textposition (`*3/4`, `bound.getWidth()` als x-Offset etc.). Wenn du das beibehältst, wäre es lesbarer, diese Offsets als benannte Konstanten oder kurze Hilfsvariablen zu formulieren.\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"
}
}