## Class RuchetarioMk3

    java.lang.Object
      jrobots.simulation.simulationObjects.AbstractPilot
          jrobots.simulation.simulationObjects.Pilot
              jrobots.simulation.simulationObjects.JRobot2012
                  RuchetarioMk3

All Implemented Interfaces:
  java.io.Serializable

    public class RuchetarioMk3

extends jrobots.simulation.simulationObjects.JRobot2012

This bot is dedicated to shoot rockets.

Tactics:

- keep distance (~3/4 of maximum distance) - and keep moving! - but only small circles
- concentrate scans on target (zero-order prediction)
- launch guided rockets
- direct missile impact (first-order prediction)

Since:
  2011 - first-of-its-class rocket slinger
See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class jrobots.simulation.simulationObjects.Pilot
`Pilot.DropperCommand, Pilot.LauncherAmmunition`

Field Summary

Fields inherited from class jrobots.simulation.simulationObjects.JRobot2012
`constants`

Fields inherited from class jrobots.simulation.simulationObjects.Pilot
`DOWN, LEFT, RIGHT, UP`

Fields inherited from class jrobots.simulation.simulationObjects.AbstractPilot
`memoryConsumption`

Constructor Summary
`RuchetarioMk3()`

Method Summary
`protected void` | `actions()` Everytime the simulation has progressed, each `Pilot` may plan the next actions.
`protected void` | `init()` This method is called once if the bot is set into the arena and whenever the pilot needs to be reset.

Methods inherited from class jrobots.simulation.simulationObjects.JRobot2012
`addDebugArrow, addDebugCrosshair, addDebugLine, getDirectablePositions, getEnergyConsumptionBooster, getEnergyConsumptionEngine, getEnergyConsumptionRocket, getEnergyConsumptionRocketRedirection, getEnergyConsumptionScanner, getEnergyProduction, getFramesPerSecond, getLastScan, getMaxArenaDiameter, getMaxBackwardVelocity, getMaxForwardVelocity, getMaxForwardVelocityWithBooster, getMaxScanAperture, getMaxVelocityRocket, getOrientation, getPosition, getProximityScanLaunchable, getProximityScannerProjectileRange, getRocketDamageFront, getRocketDamageRear, getRocketDamageSide, getRocketTargetBearing, getVelocity, isScanFromNow, setAutopilot, setBodyColor, setBoost, setLaunchRocket, setNameColor, setRocketHeading, setScanAperture, setScanDirection, setTurretColor`

Methods inherited from class jrobots.simulation.simulationObjects.Pilot
`getBodyColor, getEnergy, getHealth, getName, getNameColor, getTime, getTurretColor`

Methods inherited from class jrobots.simulation.simulationObjects.AbstractPilot
`clone`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### RuchetarioMk3

    public RuchetarioMk3()

Method Detail

### actions

    protected void actions()

  Description copied from class: `jrobots.simulation.simulationObjects.JRobot2012`
  Everytime the simulation has progressed, each `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:

  - Moving: `getPosition`, `getOrientation`, `getVelocity`, `getTime`
  - Scanning: `getLastScanResult`, `isScanFromNow`, `isScannerUpdated`, `getTimeOfLastScan`, `getScanInterval`
  - Shooting: `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:

  - Driving: `setAutopilot`, `setTrackspeedLeft`, `setTrackspeedRight`
  - Scanning: `setScanDirection`, `setScanAperture`
  - Shooting: `setCannonCommand`
  - Debug: `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()`.

  Specified by:
    `actions` in class `jrobots.simulation.simulationObjects.JRobot2012`

### init

    protected void init()

  Description copied from class: `Pilot`
  This method is called once if the bot is set into the arena and whenever the pilot needs to be reset.

  Please remember: If you overwrite this routine, call `super.init()`.

  Overrides:
    `init` in class `Pilot`