Home
Tutorials
Kategorien
Kategorie 1 - Bot | Es geht los!
Tutorials
Kategorien
Kategorie 1 - Bot | Es geht los!
| Kategorie 1 - Bot | Es geht los! |
|
In diesem Teil des Tutorials zeigen wir Euch, wie man herausfinden kann, welche Funktionen der Roboter noch so alles ausführen kann und werden uns ein wenig mit dem Umgang mit Java und der Objektorientierten Programmierung (OOP) vertraut machen.
Im vorigen Tutorial ( "Kategorie 0 - Bot | Beginners-tutorials" ) haben wir Euch gezeigt, wie man robocode startet und einen Wettkampf startet. Außerdem wisst Ihr wie man ein Roboter-Skeleton sich erstellen läßt und wie man den Sourcecode kompiliert. In diesem Teil des Tutorials zeigen wir Euch, wie man herausfinden kann, welche Funktionen der Roboter noch alles ausführen kann und werden uns ein wenig mit dem Umgang mit Java und der Objektorientierten Programmierung (OOP) vertraut machen. Es geht darum, einen Roboter der Kategorie 1 zu erstellen. Hier die Aufgabenstellung: Kategorie 1: Der blanke Roboter aus Kategorie 0 bekommt vom User eingestellte Farben und wird mit stumpfen vorwärts/rückwärts Bewegungen bewegt, der Turm dreht sich und Schießt in die Richtung des Gegners Bevor wir uns jetzt wieder in die Programmieung stürzen, sollten wir uns zunächst einen Überblick über unser kleines Stückchen Software verschaffen. Dazu bediene ich mich der Unified Moddeling Language (UML). Also, wie siehts aus? ![]() Dieses kleine UML-Diagramm zeigt uns symbolisch das, was wir über die Robot-Klasse bereits wissen. Unsere Tutorial-Klasse leitet sich von der Robot-Klasse ab und kann daher die Prozeduren daraus mitverwenden. Und wir sehen auch, daß wir sogar schon zwei weitere Klassen verwendet haben. Und zwar die "ScannedRobotEvent"- und"HitByBulletEvent"-Klasse. Ihr erinnert Euch: Das waren die Datentypen der Übergabeparameter der Call-Back-Prozeduren. Jetzt stellt sich die Frage, warum uns die Klasse "ScannedRobotEvent" uns als Parameter übergeben wird, wenn wir doch damit eigentlich absolut nichts anfangen können. Zunächst sei beruhigt: Wir können damit etwas anfangen. Sämtliche Klassen, die hier aufgeführt werden, werden in der sogenannten "Application Programming Interface" - oder auch kurz API genannt - beschrieben. In Deinem Installationsverzeichnis von robocode findest Du ein Verzeichnis das "javadoc" heißt. In diesem Verzeichnis brauchst Du nur die Datei "index.html" mit einem Browser zu öffnen, und schon erscheint dir das Mantra der Roboterprogrammierung... ;) Nun schaun wir also mal nach, ob wir irgend etwas in der Robots-Klasse finden können, mit dem man die Farben des Roboters ändern kann. Im Abschnitt "All Classes" klicken wir zunächst auf unsere Basisklasse "Robots". Wenn man nun etwas den Scrollbalken nach unten schiebt, dann sieht man, was man alles noch so für Prozeduren verwenden kann. Wir begnügen uns jetzt aber erstmal nur mit dem Ändern der Farben. Und hast Du schon eine passende Prozedur gefunden? - Ansonsten schlage ich jetzt einfach mal die Prozedur "void setAllColors(java.awt.Color color)" vor. Wir müssen einfach nur diese Prozedur aufrufen und die Farbe mitteilen - ähm moment mal: jawa.awt.Color color. Was ist das? Ah, okay laß mich raten: Wir müssen der Prozedur ein Objekt (instanz einer Klasse) übergeben, damit unser Robby die Farbe ändern kann. Okay, aber wie? Mal schaun, ob wir eine API auch für die Farben finden können. Dieses Mal fragen wir aber google. Hier ist eine gute Referenz der Color-Klasse zu finden. In dieser API wird uns unter Anderem folgender Konstruktor für die Color-Klasse vorgeschlagen: "public Color(int r, int g, int b)" . Ein kurzes Beispiel, wie man das jetzt in Code umsetzt: import java.awt.Color; Color C; C = new Color( 255, 128, 64 ) ; Als erstes haben wir dem Compiler mitgeteilt, daß wir die Klassen aus java.awt.Color mitverwenden möchten. Anschließend definieren wir C als ein Objekt "Color". In der darauffolgenden Zeile schließlich weisen wir C ein tatsächlich vorhandenes Color-Objekt zu, dem wir beim Kreieren gleich die gewünschten Farben mitgeben. Zurück zu unserem Beispielcode. Jetzt, da wir wissen wie man ein Color-Objekt erstellt, verwenden wir das für unseren neuen Roboter und erweitern den Sourcecode um folgende Zeile: setAllColors( new Color( 255, 128, 64 ); Diese Zeile fügen wir gleich als Ersten Befehl in die run()-Prozedur ein. Achtung: Nicht vergessen, "import java.awt.Color" ganz an den Anfang des Sourcecode-Listings einzufügen. In diesem Teil des Tutorials hast Du gelernt, daß man alle Roboter-Klassen und Prozeduren der Klassen in der API findet. Du weisst sogar, wie man auch Informationen über andere Klassen (hier: Color) in anderen APIs finden kann. Im kommenden Teil des Tutorials gehts ans Eingemachte. Jetzt mußt Du beweisen, daß Du eine API auch lesen, verstehen und anwenden kannst. Wir werden einen Roboter mit Hilfe der advancedRobots-Klasse programmieren und Deine Kenntnisse in OOP erweitern, indem wir sämtliche Funktionen in unterschiedliche Klassen kapseln. Aber jetzt : Probiere erstmal die in der Robots-Klasse definierten Prozeduren aus und finde heraus, was alles geht und was nicht geht. |

