Ich bin neu in diesem Gamedev-Stackechange, habe aber schon einmal die Mathe- und CS-Sites verwendet.
Ich bin also in einem Wettbewerb, um KI für eine Schlange zu erstellen, die in 5-Minuten-Runden mit vier anderen Schlangen konkurriert, wobei die Regeln dem traditionellen Nokia-Schlangenspiel sehr ähnlich sind, außer dass es fünf Schlangen gibt, das Brett 30x30 ist und es gibt eine Reihe kleiner Hindernisse auf dem Feld.
Wie beim Nokia-Spiel wächst Ihre Schlange, wenn Sie an die Frucht kommen und wenn Sie gegen sich selbst, eine andere Schlange oder die Wand stoßen, sterben Sie. Das Spiel läuft mit einer Verzögerung von 30 ms zwischen den Zügen und der Server sendet alle 50 ms den neuen Spielstatus, den der Code analysieren muss und was nicht, und gibt den nächsten Zug aus.
Der Gewinner ist die Schlange, die zu jedem Zeitpunkt im Spiel die längste Länge hatte. Tie Breaker werden durch Kills entschieden.
Bisher habe ich eine A * -Diagrammsuche für jede Schlange implementiert, um festzustellen, ob meine Schlange dem Apfel am nächsten ist, und wenn ja, für den Apfel. Ansonsten habe ich einen kleinen Algorithmus erstellt, um den leersten Bereich des Bretts zu bestimmen, für den sich meine Schlange entscheidet, um den nächsten Apfel vorwegzunehmen.
Abgesehen davon habe ich einige kleine Überlebensprüfungen, um sicherzustellen, dass meine Schlange nicht in eine Falle gerät, aus der sie nicht herauskommen kann, und wenn sie stecken bleibt, habe ich etwas, um ihr eine bessere Chance zu geben, herauszukommen.
...
Wie auch immer, ich habe meine Schlange auf einem Testserver getestet und es funktioniert ganz gut. Im Allgemeinen gewinnt meine Strategie, nur dann auf den Apfel zu setzen, wenn er sicher ist, und Platz zu finden, wenn er nicht schneller wächst als alle anderen Schlangen (einige Schlangen tun etwas Ähnliches, gehen aber oft nur in die Mitte oder in eine Ecke), manchmal gewinnt er Diese Probespiele werden aber meistens von derselben Schlange geschlagen, die den Vorteil der Überlebensfähigkeit zu haben scheint (meine Schlange wächst schneller, stirbt dann aber irgendwie und diese andere Schlange schreitet nur langsam voran und gewinnt an Beständigkeit.
Also habe ich mich über Ideen gewundert, die jemand haben muss, um meine Schlange zu verbessern. Oder vielleicht Ideen für einen neuen Ansatz. Meine Funktionen und Klassen sind gut, daher sollten Änderungen, die drastisch erscheinen könnten, nicht schlecht sein. Ich ermutige alle Ideen.
Irgendwelche Gedanken?
Die Schlange sollte ihre Strategie an ihre aktuelle Länge anpassen.
Eine sehr lange Schlange kann ihren Körper benutzen, um Gegner einzuzäunen. Dies bedeutet, dass es eine Abdichtung mit einer Wand machen sollte.
Wenn sich die Schlange nach Osten bewegt, mit einem Apfel nordöstlich davon, sollte sie sich bis zur Wand bewegen, bevor sie nach Norden abbiegt, sodass die möglichen Routen für andere Schlangen stark eingeschränkt sind.
Diese Schlange mit Kopf C sollte sich bei e9 nach Norden drehen, nicht bei e8, damit jeder Gegner darunter gefangen ist und keine Äpfel fressen kann, die über der 'e'-Linie erscheinen.
Je größer der Bereich ist, den Sie abschneiden können, und je länger Sie ihn halten können, desto besser.
quelle