- left
- right
- up
- down
Vielen Dank für die schnellen Antworten.
Dass man die Ausgaben der KI wirklich nicht sehen kann finde ich sehr schade. Mit den Ausgaben könnte man doch viel besser sehen, welche Fehler die KI macht oder was verbessert werden könnte. So ist es ja fast sinnlos, überhaupt Ausgaben zu programmieren.
Simon - said:
Kann ich auch selbst etwas in die Debugausgabe eintragen? Das wäre nämlich eine enorme Hilfe bei der Fehlersuche...
Siehe http://di188.di.informatik.tu-darmstadt.de/wiki/index.php/FAQ
Um Debug Ausgaben zu machen, verwenden Sie: zug.ausgabe("ausgabe")
Ähm, nur dass ich es richtig verstehe: Man hat keine Möglichkeit im Spiel selbst Hindernisse zu setzten, oder? Die KI kann praktisch nur nach oben/unten/links/rechts laufen, oder?
Und da ich sonst nicht mit Java arbeite, wie gehe ich nun am besten mit der List für Hindernisse und Blätter um? Kann wer evtl. mal ein beispiel veröffentlichen, wie man z.b. die x/y Positionen eines Hindernisses herausfindet?
Warum gibt es keine gute Dokumentation?
Es wäre viel einfacher gewesen, wenn man statt Listen immer Arrays bekommen würde.
Kann evtl. jemand mal einen kleinen Codeausschnitt posten, wie man die eigene x/y postion erhält?
Edit:
Wiso bekomme ich mit
zug.ausgabe(zustand.listeKaefer().get(0));
Im Debugfenster den Text:
Spiel$Zustand$Kaefer@1ace3f9
Spiel$Zustand$Kaefer@e784c0
Spiel$Zustand$Kaefer@d683f3
Spiel$Zustand$Kaefer@1862525
Spiel$Zustand$Kaefer@17480c9
Spiel$Zustand$Kaefer@163f0da
Spiel$Zustand$Kaefer@724357
Spiel$Zustand$Kaefer@119f33d
Spiel$Zustand$Kaefer@a32803
Spiel$Zustand$Kaefer@16a5994
@12345: auf die Liste greifst du mit meineListe.get(Index) zu. Laut der Doku unterstützt ein Hindernis die Funktionen x() und x(int x) die eine zum setzen die andere zu auslesen (das gleiche gibts auch für y)
Frage: wäre es möglich dem Kaefer Object einfach eine Clone-Methode zu verpassen? (erzeuge Käfer und dann alle daten übergeben sieht iwi blöd aus :| )
Wieso musst du denn Käfer den Clonen? Reicht es nicht einfach die Objektreferenz zwischenzzuspeichern?
@12345: Die Ausgabe erhälst du meines Erachtens nach, weil du dir die Objektreferenzen ausgeben lässt.
Zugriff auf die Positionen erhälst du zum Beispiel so:
Spiel.Zustand.Kaefer kaefer = zustand.listeKaefer().get(0);
int x = kaefer.x();
int y = kaefer.y();
Aber es ist auch erlaubt Attribute oder Variablen in der Klasse AI zu platzieren, oder darf man sich nur auf seine Zug-Methode beschränken?
Und bei jedem neuen Zug wird die Zug-Methode neu gestartet, richtig?
Hallo nochmal,
Ich benutze Python und speichere Daten, die ich mir zwischen den Zügen merke will, daher in globalen Variablen (Kennt jemand eine bessere Lösung?).
Nun neigen meine Programme aber (in ESU) dazu, beim Anfang des Rückspiels abzustürzen, weil diese Daten anscheinend zwischen den Spielen erhalten bleiben.
Was passiert eigentlich zwischen den beiden Spielen?
LG Felix
Zu a:
Soweit ich das verstanden habe, ist die Spielfeldgröße in der Ausschreibung mit 20x20 Feldern angegeben. Insofern darf bei der Bewertung der abgegebenen Lösungen keine andere Spielfeldgröße zugrunde gelegt werden.
Ich zitiere an dieser Stelle einfach mal das Wiki :
Dieser Fehler tritt auf, wenn print oder System.out.print aufgerufen wird. Ausgaben über Standard out sind zu vermeiden. Dieser Standard out Kanal ist für die Kommunikation zwischen Simulator und KI reserviert. Um Debug Ausgaben zu machen, verwenden Sie: zug.ausgabe("ausgabe") oder den Standard error Kanal.