Übungsaufgabe: dTank ChallengeDiese Aufgabe bezieht sich auf die Teilnehmer(innen) des Themenbereichs Jess/JADE/JSHOP. Es sollten sich zwei Zweierteams bilden, wobei in jedem Team genau ein Jess-Vortragender dabei sein sollte. So hat jedes Team einen Teilnehmer, der sein Vorwissen aus dem Vortrag einbringen kann. Einführung in dTank"dTank" wurde entwickelt, um verschiedene Programmierparadigmen in einer Arena zu testen. Dabei wurde ein einfaches Panzerspiel gewählt, wo beliebig viele Panzer auf einer 10x10 Matrix umherfahren können, um sich gegenseitig abzuschießen (siehe Bild). Wir verwenden "dTank2006", eine von mir leicht angepasste Version von "dTank".
Konkret startet man ein Spiel folgendermaßen:
Es liegt auf der Hand, dass die Panzer in beliebigen Programmiersprachen
implementiert sein können, solange die Socketkommunikation mit
"dTank" behandelt wird. Für JESS steht ein Interface in Form eines
jar-Files zur Verfügung, es heißt dTankJess. Bevor wir zur
eigentlichen Aufgabenstellung kommen, ein paar technische Details.
TechnischesIhr sollt einen Tank in Jess entwickeln. Dazu braucht Ihr folgende Zutaten:
JESS sollten die beiden Vortragenden besitzen bzw. wissen, wie man weitere Exemplare runterlädt - wird hier nicht verraten. Für dTank2006 gebe ich Euch eine direkt ausführbare Version, aber auch den Source-Code, falls Ihr etwas ändern möchtet (bitte Modifikationen mit mir klären).
Als Interface von JESS zu dTank dient dTankJess. Hier bekommt Ihr ein jar-File, welches Ihr beim Start von JESS in den CLASSPATH einbinden müsst: Zum Schluss noch einen Basis-Panzer, der auch nützliche Infos zur dTank-Welt enthält: Konkrete Aufgaben und ZieleAufgabe ist es, einen Tank in JESS zu implementieren. Ihr solltet dabei KEINE selbstgeschriebenen JAVA-Funktionen verwenden! Das übergeordnete Ziel des Tanks lautet: Alle gegnerischen Panzer vernichten. Teilziele sind
Folgende Funktionen sollten Eure Panzer beherrschen:
Geht davon aus, dass mehrere Panzer auf dem Spielfeld sind. Wir
werden in der Challenge auch jeweils 2 Panzer von jedem Team
GLEICHZEITIG antreten lassen. Baut deshalb ein, dass Ihr einen
befreundeten Panzer als solchen erkennt (am ID).
Infos zur dTank-WeltIhr findet viele Eigenschaften der dTank-Welt in Kommentaren im Beispielpanzer Tank-0.clp
Wie man im Screenshot sieht, hat jeder Panzer Health, Shields und Weapon Energy. Wenn Health = 0, ist man tot. Ein Panzer kann ein Shield aktivieren und ist dann für eine gewisse Zeit nicht durch Schüsse gefährdet. Die Weapon Energy sinkt bei jedem Schuss. Shields und Weapon Energy laden sich mit der Zeit wieder auf. Wichtig ist, dass jeder Panzer nur ein begrenztes Sichtfeld
hat, das so aussieht:
Die Informationen der dTank-Welt updaten sich ein Mal
pro
Sekunde. Im JESS-Beispielpanzer ist das die Länge
eines Zyklus'.
AbgabeAbzugeben sind der JESS-Code für Euren ultimativen Panzer. Bitte KOMMENTIERT Euren Code, damit Eure genialen Einfälle sich auch in der Note niederschlagen... Abgabe ist der 8.2.2007. Die Ergebniss aller Übungen werden am 15.2.2007 präsentiert. Für uns ist das natürlich ein
LIVE-EVENT, nämlich die DTANK CHALLENGE !!!
Fragen?Einfach Mail an mich: kipp (at) dfki (dot) deOder anrufen unter 302-5387 |
||