Im letzten Artikel habe ich euch gezeigt, wie man ganz einfach einen Roboter erstellen kann. Allerdings hat diese Standardroutine keine großen Gewinnaussichten, da der Bot nur vor und zurück fährt.
Deswegen fangen wir jetzt an den Bot zu verbessern. Eine Liste mit allen schon verfügbaren Befehlen (API) gibt es hier: Klick
Zuerst müsst ihr festlegen welche Art von Roboter möchte ich, bzw. muss ich verwenden.
Zur Auswahl stehen wie folgt:
- JuniorRobot (Einfachste Klasse, allerdings für einen richtigen Kampf nicht zu empfehlen)
- Robot (Standardauswahl)
- AdvancedRobot (Erweiterte Version von Robot)
- TeamRobot (Basiert auf der AdvancedRobot Klasse, wird benötigt, damit ein Team zusammen arbeiten kann)
Für den Anfang würde ich euch die AdvancedRobot Klasse empfehlen.
Also fangen wir an:
//import java.awt.Color;
Den Kommentar solltet ihr entfernen, damit ihr dem Roboter sein eigenes Aussehen zuweisen könnt.
public void run() {
// After trying out your robot, try uncommenting the import at the top,
// and the next line:
//setColors(Color.red,Color.blue,Color.green);
while(true) {
// Replace the next 4 lines with any behavior you would like
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
Hier seht ihr den Befehl um die Farbe zu ändern: //setColors
Diesen Eintrag könnt ihr entfernen und durch Diesen ersetzen:
setBodyColor(Color.black); setGunColor(Color.red); setRadarColor(Color.green); setScanColor(Color.red);
Wählt einfach die Farbe die ihr haben möchtet. Soll euer Roboter komplett in eine Farbe eingefärbt werden könnt ihr auch diesen Befehl verwenden:
setAllColors(Color.green);
Ich habe mir damals eine einfache Klasse geschrieben, die je nach Energiestatus die Farbe(Grün – Gelb - Rot) des Roboters ändert. Den Code dazu seht ihr hier:
public class ColorEngine {
public static void change(double energie, TeamRobot robot) {
if(energie <=100 && energie >= 60)
robot.setAllColors(Color.green);
else if(energie <=59 && energie >= 40)
robot.setAllColors(Color.yellow);
else if(energie <=39 && energie >= 0)
robot.setAllColors(Color.red);
}
}
Die Klassen:
In der While Schleife stehen die Befehle, die der Roboter ausführt, so lange er noch keinen Roboter gefunden hat.
Danach folgen Standardklassen, die bei bestimmten Zeitpunkten auftreten:
- onScannedRobot(ScannedRobotEvent e) – Was passiert, wenn der Roboter einen Gegner gefunden hat?
- onHitByBullet(HitByBulletEvent e) – Was passiert, wenn der eigene Roboter von einer gegnerischen Kugel getroffen wurde?
- onBulletHit(BulletHitEvent e) – Was passiert, wenn der eigene Roboter einen Gegner mit einer Kugel trifft?
- onHitRobot(HitRobotEvent e) – Was passiert, wenn es eine Kollision zwischen einem Gegner und dem eigenen Roboter gibt? (Prüfung auf Teamkollision später)
- onHitWall(HitWallEvent e) – Was passiert, wenn der Roboter gegen eine Wand fährt?
- onWin(WinEvent e) – Was passiert, wenn der Roboter gewinnt? (Spezielle Bewegung, Nachricht senden)
- onRobotDeath(RobotDeathEvent e) – Was passiert wenn der aktuelle Gegner besiegt wird?
Die schon oben erwähnte API erklärt jede Funktion ganz genau. Im folgenden Beitrag werde ich auf diese einzelnen eingehen und dazu einige Beispielen nennen.
Ähnliche Artikel:
Kommentare:
Christian Neu © 2009 - 2010
|


