Foren » 34. BwInf

Zugriff auf Attribute im Spiel Groker

    • 3 Beiträge
    23. Oktober 2015 15:23:56 CEST
    Hallo Community,

    Ich bin gerade dabei meine eigene KI im Spiel Groker zu programieren. Dabei stehe ich seit geraumer Zeit allerdings vor einem großen Problem: Ich verstehe nicht, wie ich auf die Attribute des Spieler Objekts zugreifen kann. Ich kann weder auf den letzten oder aktuellen Zug von mir noch auf den meines Gegners zugreifen.

    Kann mir jemand bei diesem Problem helfen ?

    Grüße
    Max K

    PS: Vielen Dank schon mal im Voraus.
    • 2 Beiträge
    23. Oktober 2015 17:26:15 CEST
    Die Spieler-Objekte befinden sich in einer Liste, die über zustand.listeSpieler() zu erreichen ist. Auf die Einsätze kannst du mit .letzterZug() und .aktuellerZug() zugreifen.

    MfG Lars
    • 3 Beiträge
    23. Oktober 2015 17:52:00 CEST
    Erstmal Danke für die Antwort.

    Ich habe das ganze nun in meiner KI ausprobiert und folgendes eingegeben:
    int z = zustand.listeSpieler().letzterZug();
    Es kommt aber leider eine Fehlermeldung.

    Und noch eine Frage:
    Wie kann ich denn jetzt unterscheiden, ob es mein letzter Zug oder der des Gegners ist ?
    • 2 Beiträge
    23. Oktober 2015 17:55:04 CEST
    du musst auf ein Objekt in der Liste zugreifen und nicht auf die Liste selbst. In der Liste sind beide enthalten. Du kannst über die ID erkennen, ob es sich um deine KI handelt.

    MfG Lars
    • 5 Beiträge
    29. Oktober 2015 20:18:05 CET
    Sry, wenn die Antwort schon gegeben wurde. Aber mir wird nicht ersichtlich, wie ich genau auf einen Spieler zugreifen kann. Ich hab nämlich versucht id als Parameter der Spielerliste zu übergeben, aber es Eclipse sagt, dass listeSpieler() nichts damit anfangen kann.
    • 17 Beiträge
    30. Oktober 2015 13:45:44 CET
    [blockquote]Steven Van said:
    Sry, wenn die Antwort schon gegeben wurde. Aber mir wird nicht ersichtlich, wie ich genau auf einen Spieler zugreifen kann. Ich hab nämlich versucht id als Parameter der Spielerliste zu übergeben, aber es Eclipse sagt, dass listeSpieler() nichts damit anfangen kann.[/blockquote]
    In Python ist es so: listeSpieler() ist eine Liste mit zwei Elementen, die KI des Gegners und deine eigene. Du kannst also listeSpieler()[0] oder listeSpieler()[1] aufrufen, um auf einen Spieler zuzugreifen. Die 'id' Variable der 'zug' Funktion kannst du dann mit der ID eines Spielers vergleichen, um zu erkennen, ob es sich um deine eigene KI handelt. Das sollte in Java ähnlich funktionieren.
    Dieser Beitrag wurde am 30. Oktober 2015 13:47:28 CET von Tim Weiland bearbeitet
    • 5 Beiträge
    31. Oktober 2015 00:17:38 CET
    Danke für die Antwort. Aber in Java scheint es doch anders zu sein. Jedenfalls sagt Eclipse, dass ich auf diesem Weg nur auf einen Array statt auf einer Liste zugreifen kann.
    • 5 Beiträge
    31. Oktober 2015 00:17:38 CET
    Danke für die Antwort. Aber in Java scheint es doch anders zu sein. Jedenfalls sagt Eclipse, dass ich auf diesem Weg nur auf einen Array statt auf einer Liste zugreifen kann.
    • 17 Beiträge
    31. Oktober 2015 12:15:27 CET
    Okay, das kann sein. Hast du schon listeSpieler().get(0 bzw. 1) probiert?
    • 2 Beiträge
    26. November 2015 20:21:42 CET
    Wie finde ich über die ID heraus ob es meine KI ist? die ID ändert sich doch bei jeder Herausforderung? Stehe dort irgendwie auf dem Schlauch
    Mfg Florian Stallmach
    • 17 Beiträge
    26. November 2015 21:54:49 CET
    [blockquote]Florian Stallmach said:
    Wie finde ich über die ID heraus ob es meine KI ist? die ID ändert sich doch bei jeder Herausforderung? Stehe dort irgendwie auf dem Schlauch
    Mfg Florian Stallmach[/blockquote]
    Die 'zug'-Funktion besitzt einen 'id'-Parameter, der die ID deiner KI beinhaltet. Die kannst du dann mit den IDs von den beiden KIs vergleichen, um zu ermitteln, welche deine ist.
    • 2 Beiträge
    27. November 2015 10:26:25 CET
    Auf den id-Parameter kann ich zugreifen, das habe ich schon herausgefunden gehbat, jedoch liefert mir dieser ja bloß beide ID´s aus der Liste Spieler und ich kannm sie mit get(0) oder get(1) bekommen.
    Aber wie finde ich jetzt heraus welche der beiden meine ist? An dem Vergleich hapert es. Ich finde nicht heraus wie ich auf meine Spieler ID zugreifen kann. Bringe da glaube ich viel durcheinander.
    Mfg Florian Stallmach
    • 17 Beiträge
    27. November 2015 14:03:32 CET
    [blockquote]Florian Stallmach said:
    Auf den id-Parameter kann ich zugreifen, das habe ich schon herausgefunden gehbat, jedoch liefert mir dieser ja bloß beide ID´s aus der Liste Spieler und ich kannm sie mit get(0) oder get(1) bekommen.
    Aber wie finde ich jetzt heraus welche der beiden meine ist? An dem Vergleich hapert es. Ich finde nicht heraus wie ich auf meine Spieler ID zugreifen kann. Bringe da glaube ich viel durcheinander.
    Mfg Florian Stallmach[/blockquote]
    Ich glaube, du hast mich falsch verstanden. Dass die Spieler ein ID-Attribut haben ist klar, aber die 'zug'-Funktion hat zusätzlich einen Parameter für die ID deiner eigenen KI. Das hat mit den Spieler-Objekten nichts zu tun. Diese ID aus der Funktion kannst du dann mit der ID von den Objekten vergleichen.
    Dieser Beitrag wurde am 27. November 2015 14:03:38 CET von Tim Weiland bearbeitet
    • 3 Beiträge
    27. November 2015 16:36:05 CET
    Du kannst in deiner KI einfach folgende Zeile eingeben: zustand.listeSpieler().get(1);
    Diese sollte dir den Zugriff ermöglichen. Wenn nicht, dann musst du ...get(0); schreiben.