Home
Tutorials
Kategorien
Kategorie 0 - Bot | Beginners-tutorials
Tutorials
Kategorien
Kategorie 0 - Bot | Beginners-tutorials
| Kategorie 0 - Bot | Beginners-tutorials |
|
Wir möchten an dieser Stelle eine Einführung in die Programmierung der robocode-Roboter geben. Um die verschiedenen Schwierigkeitsstufen klassifizieren zu können, haben wir die unterschiedlichen Roboter in Kategorien unterteilt, die nun nach und nach vorgestellt werden.
Robocode wurde ursprünglich im Jahre 2002 von IBM entwickelt, um Mitarbeiter zügig in die Materie der Java-Programmierung einzuführen. Inzwischen hat sich das Lernprogramm zu einem richtigen, neuartigen Roboter-Game gemausert in dem der 'Spieler' mit einem völlig neuen Spielkonzept gefesselt wird. Wir möchten an dieser Stelle eine Einführung in die Programmierung der robocode-Roboter geben. Um die verschiedenen Schwierigkeitsstufen klassifizieren zu können, haben wir die unterschiedlichen Roboter in Kategorien unterteilt, die nun nach und nach vorgestellt werden. Wir beginnen mit: Kategorie 0: Der nakte Bot aus der Programmierumgebung Nach dem Herunterladen von robocode von der Projektseite auf sourceforgen.net und nachdem man es installiet, präsentiert sich robocode nach dem Starten wie auf dem Bild gezeigt. ![]() Nach einem Klick auf "Battle" und anschließend im Auswahlmenü auf "new", wird ein neuer Kampf gestartet. Es erscheint ein Auswahlmenü in dem man die einzelnen Roboter auswählen, die Anzahl der Runden und die Spielfeldgröße vorgeben kann, usw. Nach einem Klick auf "Start Battle" treten die Roboter gegeneinander an und man kann sich mit Cola, Chips und Popcorn gemütlich zurücklehnen und beobachen, was da passiert. Im Augenblick werden dort jedoch nur relativ 'dumme' Bots gegeneinander antreten, weil ein intelligenter Bot noch nicht programmiert wurde. Das ist jetzt unsere Aufgabe. Aufgabe Kategorie 0: Blanker Roboter ohne Logik erstellen, wie er als Programmierskeleton beim Erstellen eines neuen Robots aus der SW geworfen wird. Um einen neuen Roboter zu erstellen, klicken wir im Menü auf "Robot" => "Editor". Es erscheint unsere erste Programmieroberfläche, der "Robot Editor". Im Editor klicken wir nun auf "File" => "New" => "Robot" ![]() Es erscheint ein Fenster, in das wir den Namen unseres ersten Bots schreiben sollen. Wir nennen ihn einfach mal "Tutorial01". Es erscheint ein weiteres Fenster, in das wir - um Namenskonflikte zu vermeiden - unsere Initialen dazuschreiben sollen. Ich schreibe meine Initialen, Du verwendest Deine, damit wir unsere Roboter später auch gegeneinander antreten lassen können. Jetzt wird das Skeleton eines Roboters erstellt und im Editor dargestellt. Bevor man dieses Skeleton gegen andere Roboter antreten lassen kann, muß der Sourcecode kompiliert werden. Mit F6 startet man den Compiler und bekommt ein Compiler-Fenster angezeigt, das einem mitteilt ob das Kompilieren sauber durchgelaufen ist, oder ob sich beim Programmieren irgendwo ein Fehler eingeschlichen hat. ![]() Zum Skeleton: Ganz oben im Sourcecode sieht man den Namen des erzeugten Packages (was das ist, dazu später mehr). Der Name wird aus den Initialen in Kleinbuchstaben gebildet. In der zweiten Zeile werden die benötigten Klassen ( auch dazu später mehr ) importiert. "public class Tutorial01 extends Robot" bedeutet, daß unsere Roboter-Klasse "Tutorial01" heißt und sich von der Klasse "Robot" ableitet. Zunächst interessiert uns nur, daß wir dadurch sämtliche Prozeduren ( Name für Funktionen, Subroutinen im Objekt-Orientieren Fachjargon ), die in der Klasse Robot definiert werden auch bei uns in der abgeleiteten Klasse "Tutorial01" verwenden können. Genau so soll es ja auch sein, denn wir möchten einen Roboter programmieren. Innerhalb unserer Klasse wird nun eine Prozedur "run()" definiert, die zwingend vorhanden sein muss. In dieser Prozedur müssen wir später unseren Code schreiben, um den Roboter zu steuern. Weiterhin werden zwei Prozeduren definiert, in denen in etwa folgende Funktionalität eingebaut wurde:
=> Wenn ein gegnerischer Roboter gescannt wurde, dann feuere eine Kugel ab.
=> Wenn Du getroffen wurdest, dann sieh zu, daß Du Land gewinnst. Jetzt habe ich aber die bereits implementierten Funktionen in der run()-Prozedur fast unterschlagen. Der Roboter fährt 100 Pixel nach vorne, dreht seine Kanone (auf der sein Radar montiert ist und sich so mitdreht) einmal um 360 Grad. Dann fährt er 100 Pixel zurück um daraufhin wieder seine Kanone um 360 Grad nach rechts zu drehen. Das Interessante daran ist aber: Beim Drehen der Kanone dreht sich ja das Radar mit und 'scannt' somit die Umgebung. Und nun kommt eine der beiden Prozeduren ins Spiel, die ich bereits weiter oben erklärt habe: "onScannedRobot()" Das Radar findet einen Gegner und dann wird die sogenannte Call-Back-Prozedur "onScannedRobot()" aufgerufen. In diesem Fall wird einfach in die Richtung des Gegners geschossen. Ist doch soweit ganz easy, oder? Wenn alles klar ist, dann kanns mit der nächsten Kategorie weiter gehen. In Kategorie 1 werden wir einfach etwas am Sourcecode basteln und schaun, wie sich der Bot dann verhält. |



