Foren » 31. BwInf

Probleme mit ESU

  • 2. Januar 2013 20:24:14 CET

    Hallo EI Community,

     

    ich habe vor kurzem die neuste ESU-version runtergeladen. Als ich eine Simulation starten wollte mit der einzigen aktion nach oben zu laufen (zug.hochlaufen()) , habe ich bemerkt dass der "Simulation Starten" - Knopf eingerastet ist und auch im Fenster nichts passiert. Allerding gibt das Programm sehr fleißig XML-daten wie diese hier aus:

     

    -Edit: aus irgendeinem grund werden die XML-Daten im Forum nicht angezeigt, vllt. ein Serveproblem?!?

     



    2-Jan-2013 8:18:09 PM de.tu_darmstadt.di.bwinf.core.player.KISpieler sendSync
    INFO: after 0 time points receive from KI1 read
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    2-Jan-2013 8:18:09 PM de.tu_darmstadt.di.bwinf.core.player.KISpieler sendSync
    INFO: unmarshaled xml has 4 elements
    2-Jan-2013 8:18:09 PM de.tu_darmstadt.di.bwinf.core.player.KISpieler sendSync
    INFO: Readline xml from KI and unmarshal needs 12ms
    2-Jan-2013 8:18:09 PM de.tu_darmstadt.di.bwinf.core.player.KISpieler sendSync
    INFO: Logic needs 0ms for the turn of the KI

     

     

    So etwas wird jede Sekunde neu ausgegeben. Die Simulation läuft sehr lange, sie kommt nie zu einem Ende. Das Fenster kann auch nur geschlossen werden, wenn man das Programm von der Befehlszeil unterbricht (strg+c).

     

    Ist das bei euch auch so?


    Dieser Beitrag wurde am 2. Januar 2013 20:32:33 CET von nicht mehr angemeldetes Mitglied bearbeitet
    • 22 Beiträge
    3. Januar 2013 15:21:54 CET

    Ich hab das Problem auch, dass die Simulationen ewig brauchen. Vor allem dann, wenn die KI keine Exceptions erzeugt : )

     

    Du kannst die Simulationen allerdings "abbrechen" in dem du, sofern du mit Windows arbeitest, im Taskmanager alle "java.exe"n killst (nicht die javaw.exe!!). Die Oberfläche sollte dann wieder reagieren und zumindest Teile der Simualtion , soweit du sie halt hast laufen lassen, anzeigen.

    (Anwendung dieser Methode auf eigenes Risiko. Kann eventuell die Stabilität anderer Prozesse beeinflussen.)

  • 3. Januar 2013 21:07:52 CET
    Danke, so hat dass geklappt. Wahrscheinlich hätte der Prozess so lang weitersimuliert bis das Spiel beendet gewesen wäre (was nie passiert wäre)
  • 9. Januar 2013 18:53:00 CET
    Weiß jemand warum man keine Spiellogik,-ansicht und zustand laden kann ? Ich benutze die aktuellste Version von ESU und hab auch bis jetzt jede ausprobiert die es gab (bei den ersten war das Auswählen noch möglich aber das Abrufen der Funktionen nicht). Bis jetzt musste ich auf der Website arbeiten was, naja, meiner Meinung nach etwas unangenehm ist. Die Felder zum Auswählen sind bei mir einfach eingefroren, obwohl ich zwei Programme habe die gegeneinander antreten könnten. Kann mir da jemand helfen bzw. habt ihr auch das Problem :/ ?
    • 5 Beiträge
    9. Januar 2013 18:58:07 CET
    Also ich hatte das Problem auch. Hatte da eine Version runtergeladen, bei die "Laden..."-Buttons fehlten. Habe aber jetzt eine aktuelle Version, bei der alles funktioniert. Bei mir sind gibt es jetzt also neben den Auswahlfeldern jeweils einen Ladenbutton mit dem ich ne Logik-, Ansicht-, oder Zustandsdatei auswählen kann...
    • 230 Beiträge
    9. Januar 2013 22:37:41 CET
    Laut http://di188.di.informatik.tu-darmstadt.de/wiki/index.php/News hat es heute wieder ein Update der ESU gegeben.
  • 10. Januar 2013 19:24:27 CET
    Ja! Die neue Version funktioniert :DD
    Nur leider hab ich kein Plan wie man die einzelnen Positionen der Käfer abfragt. Sollte ja irgendwie zustand.Käfer.x() bzw. zustand.Käfer.y() heißen, aber wie stellt man fest um welchen Käfer es sich handelt ? Ich nehm mal an über die id welche am Anfang übergeben wird, nur wie verwendet man die ? zustand.Käfer.x(id) ? Bedanke mich für alle Rückmeldungen :)

    LG Max
    • 230 Beiträge
    10. Januar 2013 20:19:54 CET
    Max Maczasek said:
    Ja! Die neue Version funktioniert :DD Nur leider hab ich kein Plan wie man die einzelnen Positionen der Käfer abfragt. Sollte ja irgendwie zustand.Käfer.x() bzw. zustand.Käfer.y() heißen, aber wie stellt man fest um welchen Käfer es sich handelt ? Ich nehm mal an über die id welche am Anfang übergeben wird, nur wie verwendet man die ? zustand.Käfer.x(id) ? Bedanke mich für alle Rückmeldungen :) LG Max

    Mit zustand.listeKaefer() kannst Du die Liste aller Käfer abfragen. Darin ist dann auch Dein Käfer (erkennst Du daran, dass die Methode gehoert()   Deine Id zurückgibt. Auf dem Käfer kannst Du dann die Methoden x() und y() aufrufen, um die Position zu bekommen.

  • 11. Januar 2013 20:07:36 CET
    Also wenn ich das richtig verstanden habe sollte ich mit

    int id_abfragen = zustand.Kaefer.gehoert();

    meine id in id_abfragen speichern (?)
    Wenn ja dann funktioniert das nicht :D
    Das Selbe wenn ich x bzw. y abfragen will

    src/AI.java:93: unexpected type required: class, package found : variable int id_abfragen = zustand.Kaefer.gehoert(); ^ src/AI.java:93: non-static method gehoert() cannot be referenced from a static context int id_abfragen = zustand.Kaefer.gehoert(); ^

    Kann mir vielleicht jemand einfach einen Codeschnipsel schicken mit dem ich einfach nur die x oder y Koordinate in einer Variable speichern kann xD ?

    Und so am Rande: Warum gibt es so viele Zustandsmanipulationen ? Um Ausnahmen zu testen ?

    Danke wieder an alle Rückmeldungen

    Max
    • 14 Beiträge
    11. Januar 2013 21:08:14 CET
    zustand.listeKaefer() gibt ein Objekt vom Typ List zurück. Und jetzt denk wieder weiter ;)
  • 21. Januar 2013 22:43:56 CET
    Bei mir ebenfalls Probleme mit esu, die simulation bleibt stundenlang bei initialisieren. jemand ne idee?
    • 6 Beiträge
    22. Januar 2013 16:22:10 CET

    Wenn ich die Simulation starten möchte, bricht sie immer mit dem selben Fehler ab:

     

    java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.LinkedList.checkElementIndex(Unknown Source)
    at java.util.LinkedList.get(Unknown Source)
    at PlugInMain.spielzustandKopieren(PlugInMain.java:562)
    at PlugInMain.spielen(PlugInMain.java:215)
    at de.tu_darmstadt.di.bwinf.simulator.Simulator.simulate(Simulator.java:49)
    at de.tu_darmstadt.di.bwinf.esu.ESUSimulator.simulate(ESUSimulator.java:270)
    at de.tu_darmstadt.di.bwinf.esu.gui.ESUFrame$ChallengeThread.run(ESUFrame.java:1735)

     

    Ich glaube der Fehler liegt nicht an meiner KI. Hat jemand eine Idee woran das liegen könnte?

     

    EDIT: Ich weiss jetzt woran es lag, ich hatte nur eine KI zur Simulation angehakt.


    Dieser Beitrag wurde am 22. Januar 2013 19:15:19 CET von Daniel G bearbeitet
    • 14 Beiträge
    22. Januar 2013 19:31:07 CET
    @ simon hatte ich auch am anfang. Erstell mal ne leere KI. und stell alle jars nochmal neu ein. Wenn du das nicht richtig machst geht das nicht. Es könnte auch daran liegen das du nur eine KI benutzt. Du musst bei mindestens 2 KI´s nimmt teil anhaken.
  • 22. Januar 2013 20:42:32 CET

    Ich habe immer nur eine ki benutzt. danke für die hilfe


    Dieser Beitrag wurde am 22. Januar 2013 20:47:44 CET von nicht mehr angemeldetes Mitglied bearbeitet
    • 38 Beiträge
    23. Januar 2013 17:58:59 CET
    Bei mir kommt immer folgender Fehler, wenn ich auf Kompilieren klicke:
    Der Befehl "javac" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Der Befehl "jar" ist entweder falsch geschrieben oder konnte nicht gefunden werden. KOMPILIERUNG FEHLGESCHLAGEN

    Ich habe unter Windows 7 esu.jar gestartet, das Projekt Tourality.bwinf geladen und eine neue Java KI erstellt, die nur (zum testen) die Funktion "zug.rechtslaufen();" enthält.
    Hat jemand eine Ahnung, was das Problem sein könnte?
    Spiellogik und kompilierter Spielzustand ist Standart_v2 ausgewählt.
    • 22 Beiträge
    23. Januar 2013 20:03:33 CET

    Ich hatte das Problem auch. Das liegt daran, dass der Pfad zum Javacompiler in den Umgebungsvariablen nicht gesetzt ist.

     

    Um das Problem zu Lösen solltest du erstmal sicher stellen, dass das jdk installiert ist. Anschließend öffnest du die Umgebungsvariablen und trägst, falls er tatsächlich nicht vorhanden sein sollte, in die Variable Path den Pfad zum Binary Ordner ein.


    Dieser Beitrag wurde am 23. Januar 2013 20:09:02 CET von Simon - bearbeitet
    • 38 Beiträge
    24. Januar 2013 18:04:35 CET
    Danke für deine Hilfe.
    Ich hab das JDK eigentlich am Rechner, weil ich schon ein paar Android-Apps geschrieben habe...
    Wo kann ich den die Umgebungsvariablen ändern?
    Oder liegt es evtl. daran, dass ich esu.jar immer direkt starte, ohne es vorher entpackt zu haben?
    • 6 Beiträge
    24. Januar 2013 18:58:48 CET
    Hier ist erklärt wie man die Umgebungsvariablen ändert: http://turnier.bundeswettbewerb-informatik.de/wiki/index.php/PathSetting

    Bei mir war das Problem auch, obwohl ich vorher schon Android-Apps geschrieben habe. Mit dieser Anleitung hat es aber funktioniert.
    • 38 Beiträge
    26. Januar 2013 11:57:29 CET
    Vielen Dank. Jetzt bekomme ich die Meldung "Kompilierung erfolgreich!"
    • 5 Beiträge
    29. Januar 2013 13:09:51 CET
    Ich bekomme den compiler fehler, dass er die Klasse Blatt nicht findet. jemand ne idee?
    • 5 Beiträge
    29. Januar 2013 15:07:18 CET
    Vllt findet er ja die Klasse Spiel.Zustand.Blatt? ;-)
    • 5 Beiträge
    29. Januar 2013 18:06:45 CET
    ja, danke. Ich schein hierfür falsch zu denken, aber jetzt will der mir sagen, dass der die Variablen x und y der Blaetter und Kaefer Objekte nicht kennt
    • 230 Beiträge
    29. Januar 2013 18:17:48 CET

    Hier gibt es zwei Lösungsmöglichkeiten für Dich: Entweder kommst du darauf, dass x und y keine Variablen sondern Funktionen sind, die man aufrufen kann, um die Koordinaten zu bekommen. Alternativ kannst Du es auch morgen im Chat mit den Betreuern der Umgebung fragen....

    • 5 Beiträge
    29. Januar 2013 18:20:17 CET
    gibt es eig. eine Dokumentation der Klassen Kaefer, Blatt und Hindernis?
    • 38 Beiträge
    29. Januar 2013 19:15:12 CET
    Anscheinend gibt es keine Dokumentation, es soll uns wohl dieser Kommentar jeder neuer Codedatei langen -.-

    Ich finde es etwas schlecht gelöst, wie man die Hindernis-Koordinaten, etc. abrufen kann. Warum unbedingt eine List als Rückgabewert? Ein Array fände ich vieeeeel besser.

    Könnte einer evtl. kurz ein Beispielcodeschnipsel posten, wie man z.b. seine eigene x-position in eine Variable abspeichert?