Wie schon woanders angekündigt, beschäftige ich mich seit kurzem mit dem Thema "
Programmierspiel". Daraus ist dieses hier entstanden.
Das Programm liest über Parameter die Arenagröße und -breite und die einzelnen Script-Dateien für die Roboter ein
Beispiel für Anwendungsstart:
aiMBots 10 10 robot10.rob robot10.rob
Startet das Spiel mit 2 Robotern "Robot10" und der Arenagröße X=10, y=10 (siehe neue version unten)
Maximal sind 256 Roboter möglich, hab ich aber noch nicht ausprobiert
Da es eine eigene Scripsprache gibt, werde ich wohl einige Erklärungen liefern müssen, zumal ich noch keine readme oder help-Datei erstellt habe
Hier ein Beispielscript, das ich kurz erläutern werde:
Code:
Wuppdi <-- Name des Roboters
OnIdle <-- wird jede "Runde" ausgelöst
{
inc(var); <-- jeder Roboter hat (bis jetzt) eine eigene Variable, die Standardmäßig 0 ist
if(var>5) shoot; <-- Der Roboter schiesst, sobald "var" größer 5 ist.- Ein schuss schiesst in die aktuelle Richtung, durch alles durch. Kann also mehrere Roboter auf einmal treffen. Ein Treffer macht 10 Schaden, von 100 standard-hp. Kann nur in OnIdle ausgelöst werden
if(var>10) inc(angle); <-- erhöht den Angle des Roboters. Dieser dreht sich jeweils im 45°-Winkel. Zwischengrößen gibt es (noch) nicht.
if(var>10) move; <--Lässt den Roboter in die aktuelle Richtung laufen
if(var>10) set(var) 0; <-- setzt die Variable auf 0
}
OnCollision <-- wird ausgelöst, wenn der Roboter mit der Wand kollidiert
{
if(life<50) inc(angle); <-- ähnlich oben
inc(angle);
inc(angle);
move;
dec(angle);
}
OnHit <-- wird ausgeführt, wenn der Roboter von einem anderen getroffen wird
{
inc(angle);
}
Unbedingt zu beachten sind die Leerzeichen und groß/kleinschreibung. Leerzeichen an anfang und ende einer Zeile hingegen sind egal.
Noch etwas zu den if-bedingungen:
es werden zwei werte verglichen. Der erste (oben im beispiel var, bzw life) muss eine dieser variablen sein, der zweite kann entweder eine variable sein oder eine zahl.
Man kann den winkel mit
set(angle) 90;
o.ä. auch direkt verändern.
Außer den Variablen var, angle und life, gibt es noch PosX und PosYn, auf die man zugreifen kann, jedoch (wie life) nicht veränderbar sind und die Position des Roboters darstellen.
Es handelt sich um eine Betaversion, somit kann es noch zu Fehlern kommen. Diese bitte melden.
Es wird demnächst noch mehr Funktionen geben.
Da ich einige bescherde-PNs erhalten habe, aufgrund des Archivformats RAR, diesmal im ZIP-Format..
[Neue Version 0.2]
-Keine Parameter mehr nötig
-Bilderchen

-Diverse Bugfixes, u.a:
--Roboter können nicht mehr in Wänden stecken

--Shooting-Bug behoben
[/Neue Version 0.2]
[Neue Version 0.25]
-Bugfix: In der Wand spawnen
-Schrift in weiß
-mehr platz für Namen
[/Neue Version 0.25]
-Alternativer Download (Nicht immer erreichbar)
->
http://inion.servegame.org:8000/files/aimbots.zip