Moin,
Neulich habe ich im Netz (wo sonst) etwas interessantes gefunden was für "groß und klein" machbar ist.
Es geht um die Ameisen AI. (http://de.wikipedia.org/wiki/AI_Challenge#Ants)
Ich möchte nun hier Meinungen dazu Sammeln, sowie mögliche Regeln und sonstiges, damit kein Chaos ensteht.
Zum Schluss soll es klar definierte (möglichst lückenfreie) Regeln geben, damit jeder wirklich die gleiche Chance hat.
Das Spiel:
Es treten immer 2 bis n Spieler gegeneinander an.
Jeder Spieler hat zu Beginn einen "Hügel" aus dem "Ameisen" herauskommen und umherlaufen.
Diese Ameisen sammeln Essen um weitere Ameisen zu produzieren.
Dabei müssen sie sich selbstständig in einem kleinen Labyrinth zurechtfinden.
Treffen sich 2 Ameisen sterben beide.
Besiegt wird ein Spieler indem eine Ameise eines Feindes den eigenen Hügel erreicht.
Sieger ist wer als letzter übrig ist, oder (falls es zu keinem eindeutigen Sieg kommt) wer am Ende die meisten Ameisen vorweisen kann.
Aufgabe:
Programmieren einer künstlichen Intelligenz für die Ameisen, damit sie Essen suchen und Feinde Abwehren/Angreifen.
Meine Vorstellung:
--------
Das Skript beinhaltet ein Array[x][y] welches das komplette Spielfeld beinhaltet. Mehr Daten stehen der AI nicht zur Verfügung.
Die AI Funktion hat nur einen Parameter (Das Array) welches vorher speziell generiert wird, sodass die AI selbst immer Spieler 1 ist und die anderen dann Spieler 2, 3, usw. Dadurch wird es möglich dass eine AI ein beliebiger Spieler (1 - n) sein kann ohne umgeschrieben zu werden.
MOVE verändert das Globale Array, NICHT das spezielle Array. Mit dem speziellen Array darf man machen was man will.
--------
Nur natives AutoIt ist erlaubt.
Keine DllCalls/DllCallAdress und sonstiges.
Das include Array.au3 darf benutzt werden. (keine weiteren Includes)
Keine Externen Daten (z.B. per IniRead/Write, FileRead/Write, InetGet, usw) auch nicht wenn sie zur Laufzeit erstellt werden.
Die AI darf nur genau eine Funktion sein. Weitere Funktionen sind nicht erlaubt.
Zur Manipulation der Daten darf ausschließlich MOVE(x, y, sRichtung) (sRichtung = l, r, o, u) genutzt werden.
Der Code jeder AI wird öffentlich gemacht.
Es sieht also so aus, dass man nur eine einzige Funktion schreiben darf die unter Zuhilfenahme der Arraydaten das Spielfeld kennt und mittels MOVE einzelne Ameisen bewegen kann.
Regelverstöße verursachen einen Error und werden nicht ausgeführt. (Bewegen einer fremden Ameise, bewegen in "p" (die Richtung "p" existiert nicht), Bewegen einer Stelle an der sich keine Ameise befindet, Laufen durch Wände, usw.)
Es werden Spielfelder zufallsgeneriert (per Seed). Es treten dann einige (oder auch nur 2) AIs gegeneinander in 5 Levels jeweils mit vertauschten Positionen gegeneinander an. (also bei 2 Spielern 10 Durchläufe). Anschließend kann man den Sieger ermitteln.
Andere Möglichkeit: (welche mir sogar besser gefällt^^)
Mit den gleichen Regeln wie oben, aber:
Es treten immer 2 Spieler auf 5 Festgelegten Karten (mit vertauschten Positionen) gegeneinander an.
Der Sieger ist "Champ".
Nun darf jeder aus dem Forum eine AI schreiben die den "Champ" besiegen kann. (auf den gleichen 5 Karten)
Dieser Wettbewerb würde also praktisch nie zu Ende gehen, da immer jemand eine noch bessere AI schreiben kann.
Beim Beginn des wettbewerbs werde ich eine extrem schlechte AI bereitstellen die es zu schlagen gilt. (Habe nicht so viel Zeit und kann daher keine "gute" AI schreiben. Würde aber gene mitmachen)
(das Skript in das man zwei AIs einsetzen kann habe ich schon angefangen)
Nun ist eure Meinung gefragt.
Habt ihr Lust es mal zu versuchen ?
Wie wollt ihr es versuchen ?
Wie viele Leute machen überhaupt mit ?
___