public abstract class JRobot2008 extends Pilot
JRobot2008
features a completely new, object-oriented method
interface.
It complies with the lately provided LinearPredictor
for
target motion prediction.
Pilot.DropperCommand, Pilot.LauncherAmmunition
memoryConsumption
Constructor and Description |
---|
JRobot2008() |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
actions()
Everytime the simulation has progressed, each
Pilot may plan
the next actions. |
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(float x1,
float y1,
float x2,
float y2) |
protected void |
addDebugLine(Vector p1,
Vector p2)
Mit Hilfe dieser Funktion kann ein Bot eine Linie auf's Spielfeld
zeichnen.
|
BodyFactory |
getBodyFactory()
determines the favorite supplier this
Pilot is designed for. |
protected static double |
getDropperReloadTime()
Liefert die Zeit in Sekunden, die der Minenleger zum Nachladen ben??tigt.
|
protected Scan |
getLastScan()
Liefert das Ergebnis des letzten "Scanblitzes".
|
protected static double |
getLauncherReloadTime()
Liefert die Zeit in Sekunden, die die Kanone zum Nachladen ben??tigt.
|
protected static double |
getMaxArenaDiameter()
Zwei Panzer k??nnen sich nicht weiter als den zur??ckgegebenen
Wert voneinander entfernen.
|
protected static double |
getMaxBackwardVelocity()
Retrieves the maximum backward velocity of the
Panzer . |
protected static double |
getMaxForwardVelocity()
Retrieves the maximum forward velocity of the
Panzer . |
protected static Angle |
getMaxScanAperture()
Liefert den gr????tm??glichen ??ffnungswinkel des Scanners.
|
protected Angle |
getOrientation()
Liefert die aktuelle Ausrichtung des Panzerk??rpers.
Dieser Wert stimmt nicht immer genau mit dem Winkel des Geschwindigkeitsvektors ??berein, da der Bot auch seitlich rutschen kann (z.B. |
protected Vector |
getPosition()
Liefert die aktuelle Position des Panzers im Spielfeld relativ zur
oberen linken Ecke.
|
protected static double |
getProjectileSpeed()
Liefert die Geschwindigkeit (in Meter pro Sekunde), mit der das
Projektil, das der Panzer verschiessen kann, fliegt.
|
protected static double |
getScanInterval()
Liefert die Zeit in Sekunden, die der Scanner zum "Nachladen" ben??tigt.
|
protected double |
getTimeOfLastMine()
Liefert den Zeitpunkt, an dem der Panzer die letzte Mine gelegt hat.
|
protected double |
getTimeOfLastShot()
Liefert den Zeitpunkt, an dem der letzte Schu?? abgefeuert wurde.
|
protected Vector |
getVelocity()
Liefert den aktuellen Geschwindigkeitsvektor des Panzers.
|
protected boolean |
isScanFromNow()
Liefert true, wenn der aktuelle Scanwert im Scanner von diesem Frame
stammt, also wenn gilt: getTime() == getLastScan().timeOfScan
Der Scanner hat also in diesem Frame einen Scan durchgef??hrt. |
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
Panzerk??rpers gefiltert wird.
|
protected void |
setDebugLines(Vector[] points)
Mit Hilfe dieser Funktion kann ein Bot mehrere Linien auf's Spielfeld
zeichnen.
|
protected void |
setDebugText(java.lang.String text)
??bergibt dem Framework einen Text, den es direk unterhalb des
umherfahrenden Bots anzeigt.
|
protected void |
setDropMineCommand(boolean isToBeLayed)
Setzt den Befehl, beim nächstmöglichen Zeitpunkt eine Mine zu legen.
Dies hat keinen Einfluss auf die Nachladegeschwindigkeit der Minenlegereinrichtung. |
protected void |
setLaunchProjectileCommand(Angle command)
Setzt die gew??nschte Schu??richtung und -distanz [Meter] des Bots.
|
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 |
setScanAperture(Angle aperture)
Hiermit sagt man dem Scanner, mit welchem ??ffnungswinkel der n??chste
"Scanblitz" erfolgen soll.
|
protected void |
setScanDirection(Angle scanDirection)
Setzt die Richtung, in die der n??chste "Scanblitz" gehen soll.
Z.B. |
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, init
clone
protected abstract void actions()
Pilot
may plan
the next actions. This is done through execution of this method.
Knowledge a Pilot
has of the momentary simulation state is
limited to what its Panzer
's sensors may display. Access to
the Panzer's sensor states is best done via the following methods:
getPosition
, getOrientation
,
getVelocity
, getTime
getLastScanResult
, isScanFromNow
,
isScannerUpdated
, getTimeOfLastScan
,
getScanInterval
getTimeOfLastShot
,
getProjectileSpeed
A Pilot
is able to steer its Panzer
. The Panzer
will follow those decisions until the Pilot canges its commands.
Decisions are made by calling the following routines:
setAutopilot
, setTrackspeedLeft
,
setTrackspeedRight
setScanDirection
, setScanAperture
setCannonCommand
setDebugText
, setDebugLines
You may add fields as you like to keep some state through the coarse of
the simulation run. But remember not to waste memory, as the framework
checks the size of your Pilot
's state and may refuse to
permit it to the arena.
You can always use static fields, but that makes the timeline
slider obsolete for debugging.
Also keep track of the computing time you spend, because if you exeed a
certain treshold, the framework may exert punishment upon your Pilot. If
you try to not waste time, there shouldn't be a problem, however.
If your Pilot causes an exception, there will also be some detriment, but
a new instance of your Pilot will be established, so you may be able to
carry on.
Package visibility. Pilots with a partial programming interface may want to have an invisible partial implementation of actions().
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 deklariert werden.
p1
- Startpunkt des Pfeilsp2
- Endpunkt des Pfeils (hier ist der Pfeilkopf)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 deklariert werden.
position
- die Position des Kreuzesprotected final void addDebugLine(float x1, float y1, float x2, float y2)
protected 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 deklariert werden.
p1
- Startpunkt der Liniep2
- Endpunkt der Liniepublic 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 getDropperReloadTime()
protected final Scan getLastScan()
Pilot.getLastScan()
protected static final double getLauncherReloadTime()
protected static final double getMaxArenaDiameter()
protected static final double getMaxBackwardVelocity()
Panzer
.
protected static final double getMaxForwardVelocity()
Panzer
.
protected static final Angle getMaxScanAperture()
protected final Angle getOrientation()
protected final Vector getPosition()
protected static final double getProjectileSpeed()
protected static final double getScanInterval()
protected final double getTimeOfLastMine()
protected final double getTimeOfLastShot()
protected final Vector getVelocity()
protected final boolean isScanFromNow()
protected final void setAutopilot(Angle direction, double speed)
direction
- gew??nschte Fahrtrichtungspeed
- gew??nschte Geschwindigkeit im Intervall [-1...+1]protected final void setBodyColor(java.awt.Color newColor)
newColor
- protected final void setDebugLines(Vector[] points)
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 deklariert werden.
points
- Start- und Endpunkte der Linienprotected final void setDebugText(java.lang.String text)
text
- anzuzeigender Textprotected final void setDropMineCommand(boolean isToBeLayed)
Hinweis: Sobald eine Mine gelegt wird, wird der Befehl gelöscht. Zum erneuten Befehlen, eine Mine zu legen, ist ein Aufruf mit dem Parameter true nötig.
isToBeLayed
- protected final void setLaunchProjectileCommand(Angle command)
command
- Zielpunkt in Polarkoordinatenform relativ zum Panzerprotected final void setNameColor(java.awt.Color newNameColor)
newNameColor
- protected final void setScanAperture(Angle aperture)
aperture
- ??ffnungswinkelprotected final void setScanDirection(Angle scanDirection)
setScanDirection(new RadAngle(Math.PI));
scanDirection
- gew??nschte Scanrichtungjava.lang.NullPointerException
- wenn der Parameter null
istprotected final void setTurretColor(java.awt.Color newColor)
newColor
-