public abstract class JRobot2014Sprint2 extends Pilot
doShooting()
,
doDriving()
,
Serialized FormPilot.DropperCommand, Pilot.LauncherAmmunition
memoryConsumption
Constructor and Description |
---|
JRobot2014Sprint2() |
Modifier and Type | Method and Description |
---|---|
protected void |
addDebugArrow(Vector start,
Vector end)
Mit Hilfe dieser Funktion kann ein Bot einen Pfeil auf's Spielfeld
zeichnen.
|
protected void |
addDebugCrosshair(Vector position)
Mit Hilfe dieser Funktion kann ein Bot ein Kreuz auf's Spielfeld
zeichnen.
|
protected void |
addDebugLine(Vector p1,
Vector p2)
Mit Hilfe dieser Funktion kann ein Bot eine Linie auf's Spielfeld
zeichnen.
|
protected void |
doDriving()
In der Standardimplementierung wird in einem gro�en Kreis um den Gegner herum gefahren.
|
protected abstract void |
doShooting()
In jedem Simulationszyklus plant jeder JRobot seine nächsten Aktionen.
|
BodyFactory |
getBodyFactory()
determines the favorite supplier this
Pilot is designed for. |
protected static double |
getBulletDamageFront()
Liefert den Schaden, den eine Kugel anrichtet, die an der Frontpanzerung aufschl�gt.
|
protected static double |
getBulletDamageRear()
Liefert den Schaden, den eine Kugel anrichtet, die an der R�ckseite aufschl�gt.
|
protected static double |
getBulletDamageSide()
Liefert den Schaden, den eine Kugel anrichtet, die an der Seiteeite aufschl�gt.
|
protected static double |
getBulletSpeed()
Liefert die Geschwindigkeit (in Meter pro Sekunde), mit der eine Granate fliegt.
|
protected static double |
getEnergyConsumptionBullet() |
protected static double |
getEnergyConsumptionEngine() |
protected static double |
getEnergyConsumptionScanner()
Jeder einzelne Scannerblitz verbraucht Energie.
|
protected static double |
getEnergyProductionPerFrame()
In jedem Simulationszyklus erhält der JRobot eine kleine Menge Energie dazu.
|
protected static int |
getFramesPerSecond()
Die physikalische Zeit, die in jeder "Zeitscheibe" vergeht, ist konstant.
|
protected static double |
getJRobotLength()
Anhand dieser Länge können Größen in der Arena abgeschätzt werden.
|
protected Scan |
getLastestRoundaboutScanHit()
Ein Scan ist erfolgreich, wenn der kreisende Radarstrahl auf einen Gegner trifft.
|
protected static double |
getMaxArenaDiameter()
Zwei Panzer können sich nicht weiter als den zurückgegebenen
Wert voneinander entfernen.
|
protected static double |
getMaxBackwardVelocity() |
protected static double |
getMaxForwardVelocity() |
protected Vector |
getPosition()
Liefert die aktuelle absolute Position des JRobot in der Arena.
|
protected Vector |
getVelocity()
Liefert den aktuellen Geschwindigkeitsvektor des Bots.
|
protected void |
init()
This method is called once if the bot is set into the arena and whenever the pilot needs to be reset.
|
protected void |
setAutopilot(Angle direction,
double speed)
Diese Funktion aktiviert den Autopilot, welcher selbständig die
Geschwindigkeiten der beiden Panzerketten regelt.
Der Autopilot fährt so lange mit der angegebenen Geschwindigkeit in die angegebene Richtung, bis diese Funktion mit neuen Daten nochmals aufgerufen wird. |
protected void |
setBodyColor(java.awt.Color newColor)
Hiermit kann eine Farbe eingestellt werden, mit der das Bild des
Rumpfes gefiltert wird.
|
protected void |
setLaunchProjectileCommand(Angle command) |
protected void |
setNameColor(java.awt.Color newNameColor)
Hiermit kann die Farbe des Schriftzuges verändert werden, der in der
Arena über dem Bot angezeigt wird.
|
protected void |
setTurretColor(java.awt.Color newColor)
Hiermit kann eine Farbe eingestellt werden, mit der das Bild des
Panzerturms gefiltert wird.
|
getBodyColor, getCurrentTerrain, getEnergy, getHealth, getIsMovingInWrongDirection, getName, getNameColor, getPosOfBestBot, getTime, getTurretColor
clone
protected final void addDebugArrow(Vector start, Vector end)
Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugefügt wurden. Für eine längere Anzeige müssen die Linien also in jedem Frame neu gesetzt werden.
protected final void addDebugCrosshair(Vector position)
Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugefügt wurden. Für eine längere Anzeige müssen die Linien also in jedem Frame neu gesetzt werden.
position
- die Position des Kreuzesprotected final void addDebugLine(Vector p1, Vector p2)
Alle Debug-Linien sind jeweils nur in dem Frame sichtbar, in dem sie hinzugefügt wurden. Für eine längere Anzeige müssen die Linien also in jedem Frame neu gesetzt werden.
p1
- Startpunkt der Liniep2
- Endpunkt der Linieprotected void doDriving()
Durch überschreiben der Methode kann das Verhalten ge�ndert werden.
Die Reihenfolge der Aufrufe in jedem Simulationsschritt ist wie folgt:
setAutopilot(Angle, double)
,
doShooting()
protected abstract void doShooting()
Das Wissen eines JRobot �ber den momentanen Zustand der Simulation ist begrenzt durch die Dinge, die er aus seinen Sensoren auslesen kann. Sensoren sind generell alle solchen Methoden, die mit get... beginnen:
Pilot.getTime()
, Pilot.getEnergy()
,
getEnergyProductionPerFrame()
getPosition()
,
getVelocity()
, getEnergyConsumptionEngine()
getLastestRoundaboutScanHit()
getBulletSpeed()
,
getEnergyConsumptionBullet()
Ein JRobot kann Aktionen planen, die dann im nächsten Simulationszyklus eine Auswirkung haben. Aktionen sind generell alle solchen Methoden, die mit set... beginnen:
setLaunchProjectileCommand(Angle)
setAutopilot(Angle, double)
addDebugArrow(Vector, Vector)
,
addDebugCrosshair(Vector)
, addDebugLine(Vector, Vector)
setBodyColor(Color)
, setTurretColor(Color)
,
setNameColor(Color)
Im Package jrobots.utils stehen einige Hilfsklassen zur Verfügung, die frei verwendet werden können.
Es ist möglich, static Felder zu verwenden, allerdings führt das dazu, dass der Zeitschieber zum Debuggen nicht mehr benutzt werden kann. Also besser keine statischen Felder verwenden.
Laufzeit- und Speicherverbrauch werden vom Framework beobachtet.
Wird ein sinnvoller Betrieb des Frameworks dadurch
übermäßig eingeschränkt,
kann der verursachende Bot vom Wettbewerb ausgeschlossen werden.
Laufzeitfehler werden vom Framework abgefangen und der Bot neu gestartet.
doDriving()
public final BodyFactory getBodyFactory()
Pilot
Pilot
is designed for.
Implementor is obligated to add the final modifier.
getBodyFactory
in class Pilot
BodyFactory
protected static final double getBulletDamageFront()
protected static final double getBulletDamageRear()
protected static final double getBulletDamageSide()
protected static final double getBulletSpeed()
Die Granate fliegt mit konstanter Geschwindigkeit, bis sie ihr Ziel erreicht hat.
Die Geschwindigkeits des Bots, von dem sie abgefeuert wurde, beeinflusst die Granate nicht.
protected static final double getEnergyConsumptionBullet()
protected static final double getEnergyConsumptionEngine()
protected static final double getEnergyConsumptionScanner()
protected static final double getEnergyProductionPerFrame()
protected static final int getFramesPerSecond()
In jeder Zeitscheibe wird ein Mal die actions()-Methode aufgerufen.
Dieser Wert ist hilfreich, wenn man den zeitlichen Abstand zwischen zwei Aufrufen der actions()-Methode wissen muss.
protected static final double getJRobotLength()
protected final Scan getLastestRoundaboutScanHit()
protected static final double getMaxArenaDiameter()
protected static final double getMaxBackwardVelocity()
protected static final double getMaxForwardVelocity()
protected final Vector getPosition()
protected final Vector getVelocity()
protected void init()
Pilot
Please remember: If you overwrite this routine, call super.init().
protected final void setAutopilot(Angle direction, double speed)
Hinweis: Der Bot kann vorwärts schneller als rückwärts fahren.
direction
- gewünschte Fahrtrichtung - in diese Richtung soll die Front zeigen.speed
- gewünschte Geschwindigkeit im Intervall [-1...+1].
Werte kleiner als Null fahren rückwärtsprotected final void setBodyColor(java.awt.Color newColor)
protected final void setLaunchProjectileCommand(Angle command)
protected final void setNameColor(java.awt.Color newNameColor)
protected final void setTurretColor(java.awt.Color newColor)