<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://robowiki.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Excession</id>
	<title>Robowiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://robowiki.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Excession"/>
	<link rel="alternate" type="text/html" href="http://robowiki.net/wiki/Special:Contributions/Excession"/>
	<updated>2026-04-06T09:25:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/FearsomeEngine&amp;diff=2276</id>
		<title>Excession/FearsomeEngine</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/FearsomeEngine&amp;diff=2276"/>
		<updated>2008-06-13T12:40:57Z</updated>

		<summary type="html">&lt;p&gt;Excession: New page: Itz a feersum endjinn, indeed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Itz a feersum endjinn, indeed&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2274</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2274"/>
		<updated>2008-06-13T12:23:33Z</updated>

		<summary type="html">&lt;p&gt;Excession: /* Drones */ renamed drone&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== News == &lt;br /&gt;
&lt;br /&gt;
My first draft bot, with GuessFactorTargeting based on the tutorial and my own dive-bombing (spiraling and circling) movement wins 15% of the time against Marshmallow 1.9.7 and 55% of the time against Grinnik 0.6, based on one 100-round battle against each. I'm very pleased with this and am anxious to continue development. I'll be officially releasing Mark I of my first bot next Wednesday. -- 18-Jun-08 Excession&lt;br /&gt;
&lt;br /&gt;
== Bots == &lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:FearsomeEngine]]''' First bot. Under construction. Really. I need something by June 18th for a Robocode tournament, but as I don't anticipate my bot being properly ready by then, I'll just call whatever I've got by then ''Stillborn'' and declare it 1.0.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:DiveBomber]]''' A drone that spirals in towards and then circles its enemy and fires pot shots. Fun to watch and beats most of the sample bots and the occasional mega bot too. (Was called [[Excession:SpiralCircle]].)&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2272</id>
		<title>Excession/DiveBomber</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2272"/>
		<updated>2008-06-13T12:22:38Z</updated>

		<summary type="html">&lt;p&gt;Excession: Excession:SpiralCircle moved to Excession:DiveBomber: SpiralCircle drone renamed to DiveBomber&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Drone]] by [[User:Excession]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package excession.drones;&lt;br /&gt;
&lt;br /&gt;
import static java.lang.Math.E;&lt;br /&gt;
import static java.lang.Math.PI;&lt;br /&gt;
import static java.lang.Math.atan;&lt;br /&gt;
import static java.lang.Math.atan2;&lt;br /&gt;
import static java.lang.Math.min;&lt;br /&gt;
import static java.lang.Math.pow;&lt;br /&gt;
import static java.lang.Math.sqrt;&lt;br /&gt;
import static robocode.util.Utils.normalRelativeAngle;&lt;br /&gt;
import robocode.AdvancedRobot;&lt;br /&gt;
import robocode.ScannedRobotEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A drone that spirals in towards and then circles its enemy and fires pot&lt;br /&gt;
 * shots.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Excession&lt;br /&gt;
 * @version 1.0, 2008-06-04, released as SpiralCircle&lt;br /&gt;
 * @version 1.1, 2008-06-09, better spiraling with Gumpertz function, renamed to&lt;br /&gt;
 *          DiveBomber&lt;br /&gt;
 */&lt;br /&gt;
public class DiveBomber extends AdvancedRobot {&lt;br /&gt;
&lt;br /&gt;
    private static final double DISTANCE = 200;&lt;br /&gt;
    private static final double SPEED = 20.0;&lt;br /&gt;
    private int direction = 1;&lt;br /&gt;
&lt;br /&gt;
    private void init() {&lt;br /&gt;
        setAdjustRadarForRobotTurn(true);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        init();&lt;br /&gt;
        setTurnRadarRightRadians(2 * PI);&lt;br /&gt;
        while (true) {&lt;br /&gt;
            execute();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent event) {&lt;br /&gt;
        lockOnTarget(event);&lt;br /&gt;
        aimAndFire(event);&lt;br /&gt;
        move(event);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void move(ScannedRobotEvent event) {&lt;br /&gt;
        double bearing = event.getBearingRadians();&lt;br /&gt;
        double range = event.getDistance();&lt;br /&gt;
&lt;br /&gt;
        if (stopped()) {&lt;br /&gt;
            switchDirection();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        double delta = range - DISTANCE;&lt;br /&gt;
        double spiral = gompertz(delta);&lt;br /&gt;
&lt;br /&gt;
        double d = SPEED;&lt;br /&gt;
        double b = sqrt(range * range - (d * d) / 4);&lt;br /&gt;
        double alpha = atan2(b, (d / 2));&lt;br /&gt;
        double tankTurn = bearing - alpha + spiral * direction;&lt;br /&gt;
&lt;br /&gt;
        setTurnRightRadians(tankTurn);&lt;br /&gt;
        setAhead(d * direction);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Calculate Gompertz function with the following values.&lt;br /&gt;
     * &lt;br /&gt;
     * &amp;lt;ul&amp;gt;&lt;br /&gt;
     * &amp;lt;li&amp;gt; a = PI/2 (90 degrees).&lt;br /&gt;
     * &amp;lt;li&amp;gt; b = -PI&lt;br /&gt;
     * &amp;lt;li&amp;gt; c = -0.01&lt;br /&gt;
     * &amp;lt;/ul&amp;gt;&lt;br /&gt;
     * &lt;br /&gt;
     * This allows us to sprial in nicely and then stabilize in a circular&lt;br /&gt;
     * orbit.&lt;br /&gt;
     * &lt;br /&gt;
     * @param x&lt;br /&gt;
     * @return Gompertz function value for x&lt;br /&gt;
     * @see http://en.wikipedia.org/wiki/Gompertz_function&lt;br /&gt;
     */&lt;br /&gt;
    private double gompertz(double x) {&lt;br /&gt;
        double spiral = PI / 2 * (pow(E, (-PI * pow(E, -x * 0.01))));&lt;br /&gt;
        return spiral;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private boolean stopped() {&lt;br /&gt;
        return getVelocity() == 0.0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void switchDirection() {&lt;br /&gt;
        direction *= -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @see http://testwiki.roborumble.org/w/index.php?title=Radar#Wide_lock&lt;br /&gt;
     */&lt;br /&gt;
    private void lockOnTarget(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double radarTurn = normalRelativeAngle(absoluteBearing - getRadarHeadingRadians());&lt;br /&gt;
        double arcToScan = min(atan(36.0 / event.getDistance()), PI / 4.0);&lt;br /&gt;
        radarTurn += (radarTurn &amp;lt; 0) ? -arcToScan : arcToScan;&lt;br /&gt;
        setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void aimAndFire(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double gunTurn = normalRelativeAngle(absoluteBearing - getGunHeadingRadians());&lt;br /&gt;
        setTurnGunRightRadians(gunTurn);&lt;br /&gt;
&lt;br /&gt;
        final double power = 3.0;&lt;br /&gt;
        if (getGunHeat() == 0.0) {&lt;br /&gt;
            setFire(power);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/SpiralCircle&amp;diff=2273</id>
		<title>Excession/SpiralCircle</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/SpiralCircle&amp;diff=2273"/>
		<updated>2008-06-13T12:22:38Z</updated>

		<summary type="html">&lt;p&gt;Excession: Excession:SpiralCircle moved to Excession:DiveBomber: SpiralCircle drone renamed to DiveBomber&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Excession:DiveBomber]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2271</id>
		<title>Excession/DiveBomber</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2271"/>
		<updated>2008-06-13T12:21:30Z</updated>

		<summary type="html">&lt;p&gt;Excession: updated to v1.1 and renamed DiveBomber&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Drone]] by [[User:Excession]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package excession.drones;&lt;br /&gt;
&lt;br /&gt;
import static java.lang.Math.E;&lt;br /&gt;
import static java.lang.Math.PI;&lt;br /&gt;
import static java.lang.Math.atan;&lt;br /&gt;
import static java.lang.Math.atan2;&lt;br /&gt;
import static java.lang.Math.min;&lt;br /&gt;
import static java.lang.Math.pow;&lt;br /&gt;
import static java.lang.Math.sqrt;&lt;br /&gt;
import static robocode.util.Utils.normalRelativeAngle;&lt;br /&gt;
import robocode.AdvancedRobot;&lt;br /&gt;
import robocode.ScannedRobotEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A drone that spirals in towards and then circles its enemy and fires pot&lt;br /&gt;
 * shots.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Excession&lt;br /&gt;
 * @version 1.0, 2008-06-04, released as SpiralCircle&lt;br /&gt;
 * @version 1.1, 2008-06-09, better spiraling with Gumpertz function, renamed to&lt;br /&gt;
 *          DiveBomber&lt;br /&gt;
 */&lt;br /&gt;
public class DiveBomber extends AdvancedRobot {&lt;br /&gt;
&lt;br /&gt;
    private static final double DISTANCE = 200;&lt;br /&gt;
    private static final double SPEED = 20.0;&lt;br /&gt;
    private int direction = 1;&lt;br /&gt;
&lt;br /&gt;
    private void init() {&lt;br /&gt;
        setAdjustRadarForRobotTurn(true);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        init();&lt;br /&gt;
        setTurnRadarRightRadians(2 * PI);&lt;br /&gt;
        while (true) {&lt;br /&gt;
            execute();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent event) {&lt;br /&gt;
        lockOnTarget(event);&lt;br /&gt;
        aimAndFire(event);&lt;br /&gt;
        move(event);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void move(ScannedRobotEvent event) {&lt;br /&gt;
        double bearing = event.getBearingRadians();&lt;br /&gt;
        double range = event.getDistance();&lt;br /&gt;
&lt;br /&gt;
        if (stopped()) {&lt;br /&gt;
            switchDirection();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        double delta = range - DISTANCE;&lt;br /&gt;
        double spiral = gompertz(delta);&lt;br /&gt;
&lt;br /&gt;
        double d = SPEED;&lt;br /&gt;
        double b = sqrt(range * range - (d * d) / 4);&lt;br /&gt;
        double alpha = atan2(b, (d / 2));&lt;br /&gt;
        double tankTurn = bearing - alpha + spiral * direction;&lt;br /&gt;
&lt;br /&gt;
        setTurnRightRadians(tankTurn);&lt;br /&gt;
        setAhead(d * direction);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Calculate Gompertz function with the following values.&lt;br /&gt;
     * &lt;br /&gt;
     * &amp;lt;ul&amp;gt;&lt;br /&gt;
     * &amp;lt;li&amp;gt; a = PI/2 (90 degrees).&lt;br /&gt;
     * &amp;lt;li&amp;gt; b = -PI&lt;br /&gt;
     * &amp;lt;li&amp;gt; c = -0.01&lt;br /&gt;
     * &amp;lt;/ul&amp;gt;&lt;br /&gt;
     * &lt;br /&gt;
     * This allows us to sprial in nicely and then stabilize in a circular&lt;br /&gt;
     * orbit.&lt;br /&gt;
     * &lt;br /&gt;
     * @param x&lt;br /&gt;
     * @return Gompertz function value for x&lt;br /&gt;
     * @see http://en.wikipedia.org/wiki/Gompertz_function&lt;br /&gt;
     */&lt;br /&gt;
    private double gompertz(double x) {&lt;br /&gt;
        double spiral = PI / 2 * (pow(E, (-PI * pow(E, -x * 0.01))));&lt;br /&gt;
        return spiral;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private boolean stopped() {&lt;br /&gt;
        return getVelocity() == 0.0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void switchDirection() {&lt;br /&gt;
        direction *= -1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @see http://testwiki.roborumble.org/w/index.php?title=Radar#Wide_lock&lt;br /&gt;
     */&lt;br /&gt;
    private void lockOnTarget(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double radarTurn = normalRelativeAngle(absoluteBearing - getRadarHeadingRadians());&lt;br /&gt;
        double arcToScan = min(atan(36.0 / event.getDistance()), PI / 4.0);&lt;br /&gt;
        radarTurn += (radarTurn &amp;lt; 0) ? -arcToScan : arcToScan;&lt;br /&gt;
        setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void aimAndFire(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double gunTurn = normalRelativeAngle(absoluteBearing - getGunHeadingRadians());&lt;br /&gt;
        setTurnGunRightRadians(gunTurn);&lt;br /&gt;
&lt;br /&gt;
        final double power = 3.0;&lt;br /&gt;
        if (getGunHeat() == 0.0) {&lt;br /&gt;
            setFire(power);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2270</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2270"/>
		<updated>2008-06-13T12:18:48Z</updated>

		<summary type="html">&lt;p&gt;Excession: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== News == &lt;br /&gt;
&lt;br /&gt;
My first draft bot, with GuessFactorTargeting based on the tutorial and my own dive-bombing (spiraling and circling) movement wins 15% of the time against Marshmallow 1.9.7 and 55% of the time against Grinnik 0.6, based on one 100-round battle against each. I'm very pleased with this and am anxious to continue development. I'll be officially releasing Mark I of my first bot next Wednesday. -- 18-Jun-08 Excession&lt;br /&gt;
&lt;br /&gt;
== Bots == &lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:FearsomeEngine]]''' First bot. Under construction. Really. I need something by June 18th for a Robocode tournament, but as I don't anticipate my bot being properly ready by then, I'll just call whatever I've got by then ''Stillborn'' and declare it 1.0.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots. Fun to watch and beats most of the sample bots and the occasional mega bot too.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2269</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2269"/>
		<updated>2008-06-13T12:18:14Z</updated>

		<summary type="html">&lt;p&gt;Excession: /* Bots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bots == &lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:FearsomeEngine]]''' First bot. Under construction. Really. I need something by June 18th for a Robocode tournament, but as I don't anticipate my bot being properly ready by then, I'll just call whatever I've got by then ''Stillborn'' and declare it 1.0.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots. Fun to watch and beats most of the sample bots and the occasional mega bot too.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2231</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2231"/>
		<updated>2008-06-04T23:38:22Z</updated>

		<summary type="html">&lt;p&gt;Excession: added link to under-construction first bot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bots == &lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:Stillborn]]''' First bot. Under construction. Really. I need something by June 18th for a Robocode tournament, but as I don't anticipate my bot being properly ready by then, I'll just call whatever I've got by then ''Stillborn'' and declare it 1.0.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots. Fun to watch and beats most of the sample bots and the occasional mega bot too.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2230</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2230"/>
		<updated>2008-06-04T22:49:15Z</updated>

		<summary type="html">&lt;p&gt;Excession: edited drone description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bots == &lt;br /&gt;
&lt;br /&gt;
Under construction. Really.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots. Fun to watch and beats most of the sample bots and the occasional mega bot too.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2229</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2229"/>
		<updated>2008-06-04T22:48:13Z</updated>

		<summary type="html">&lt;p&gt;Excession: added drone link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bots == &lt;br /&gt;
&lt;br /&gt;
Under construction. Really.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
[[Drone|Drones]] are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2228</id>
		<title>Excession/DiveBomber</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2228"/>
		<updated>2008-06-04T22:46:51Z</updated>

		<summary type="html">&lt;p&gt;Excession: updated author tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Drone]] by [[User:Excession]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package excession.drones;&lt;br /&gt;
&lt;br /&gt;
import static java.lang.Math.PI;&lt;br /&gt;
import static java.lang.Math.atan2;&lt;br /&gt;
import static java.lang.Math.sqrt;&lt;br /&gt;
import static java.lang.Math.toRadians;&lt;br /&gt;
import static robocode.util.Utils.normalRelativeAngle;&lt;br /&gt;
import robocode.AdvancedRobot;&lt;br /&gt;
import robocode.ScannedRobotEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A drone that spirals in towards and then circles its enemy and fires pot&lt;br /&gt;
 * shots.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Excession&lt;br /&gt;
 * @version 1.0, 2008-06-04&lt;br /&gt;
 */&lt;br /&gt;
public class SpiralCircle extends AdvancedRobot {&lt;br /&gt;
&lt;br /&gt;
    private int direction = 1;&lt;br /&gt;
&lt;br /&gt;
    private void init() {&lt;br /&gt;
        setAdjustRadarForRobotTurn(true);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        init();&lt;br /&gt;
        setTurnRadarRightRadians(2 * PI);&lt;br /&gt;
        while (true) {&lt;br /&gt;
            execute();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent event) {&lt;br /&gt;
        lockOnTarget(event);&lt;br /&gt;
        aimAndFire(event);&lt;br /&gt;
        move(event);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void move(ScannedRobotEvent event) {&lt;br /&gt;
        double bearing = event.getBearingRadians();&lt;br /&gt;
        double r = event.getDistance();&lt;br /&gt;
&lt;br /&gt;
        if (getVelocity() == 0.0) {&lt;br /&gt;
            direction *= -1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        final double SPEED = 20.0;&lt;br /&gt;
        final double DISTANCE_MAX = 50;&lt;br /&gt;
        final double DISTANCE_MIN = 40;&lt;br /&gt;
&lt;br /&gt;
        double spiral = 0;&lt;br /&gt;
        if (r &amp;gt; DISTANCE_MAX) {&lt;br /&gt;
            spiral = toRadians(45);&lt;br /&gt;
        } else if (r &amp;lt; DISTANCE_MIN) {&lt;br /&gt;
            spiral = toRadians(-5);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        double d = SPEED;&lt;br /&gt;
        final double b = sqrt(r * r - (d * d) / 4);&lt;br /&gt;
        double alpha = atan2(b, (d / 2));&lt;br /&gt;
        double tankTurn = bearing - alpha + spiral * direction;&lt;br /&gt;
&lt;br /&gt;
        setTurnRightRadians(tankTurn);&lt;br /&gt;
        setAhead(d * direction);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @see http://testwiki.roborumble.org/w/index.php?title=Radar#Wide_lock&lt;br /&gt;
     */&lt;br /&gt;
    private void lockOnTarget(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double radarTurn = normalRelativeAngle(absoluteBearing - getRadarHeadingRadians());&lt;br /&gt;
        double arcToScan = Math.min(Math.atan(36.0 / event.getDistance()), PI / 4.0);&lt;br /&gt;
        radarTurn += (radarTurn &amp;lt; 0) ? -arcToScan : arcToScan;&lt;br /&gt;
        setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void aimAndFire(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double gunTurn = normalRelativeAngle(absoluteBearing - getGunHeadingRadians());&lt;br /&gt;
        setTurnGunRightRadians(gunTurn);&lt;br /&gt;
&lt;br /&gt;
        final double power = 3.0;&lt;br /&gt;
        if (getGunHeat() == 0.0) {&lt;br /&gt;
            setFire(power);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2227</id>
		<title>Excession/DiveBomber</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2227"/>
		<updated>2008-06-04T22:46:26Z</updated>

		<summary type="html">&lt;p&gt;Excession: added author link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Drone]] by [[User:Excession]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package excession.drones;&lt;br /&gt;
&lt;br /&gt;
import static java.lang.Math.PI;&lt;br /&gt;
import static java.lang.Math.atan2;&lt;br /&gt;
import static java.lang.Math.sqrt;&lt;br /&gt;
import static java.lang.Math.toRadians;&lt;br /&gt;
import static robocode.util.Utils.normalRelativeAngle;&lt;br /&gt;
import robocode.AdvancedRobot;&lt;br /&gt;
import robocode.ScannedRobotEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A drone that spirals in towards and then circles its enemy and fires pot&lt;br /&gt;
 * shots.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Allan Halme&lt;br /&gt;
 * @version 1.0, 2008-06-04&lt;br /&gt;
 */&lt;br /&gt;
public class SpiralCircle extends AdvancedRobot {&lt;br /&gt;
&lt;br /&gt;
    private int direction = 1;&lt;br /&gt;
&lt;br /&gt;
    private void init() {&lt;br /&gt;
        setAdjustRadarForRobotTurn(true);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        init();&lt;br /&gt;
        setTurnRadarRightRadians(2 * PI);&lt;br /&gt;
        while (true) {&lt;br /&gt;
            execute();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent event) {&lt;br /&gt;
        lockOnTarget(event);&lt;br /&gt;
        aimAndFire(event);&lt;br /&gt;
        move(event);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void move(ScannedRobotEvent event) {&lt;br /&gt;
        double bearing = event.getBearingRadians();&lt;br /&gt;
        double r = event.getDistance();&lt;br /&gt;
&lt;br /&gt;
        if (getVelocity() == 0.0) {&lt;br /&gt;
            direction *= -1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        final double SPEED = 20.0;&lt;br /&gt;
        final double DISTANCE_MAX = 50;&lt;br /&gt;
        final double DISTANCE_MIN = 40;&lt;br /&gt;
&lt;br /&gt;
        double spiral = 0;&lt;br /&gt;
        if (r &amp;gt; DISTANCE_MAX) {&lt;br /&gt;
            spiral = toRadians(45);&lt;br /&gt;
        } else if (r &amp;lt; DISTANCE_MIN) {&lt;br /&gt;
            spiral = toRadians(-5);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        double d = SPEED;&lt;br /&gt;
        final double b = sqrt(r * r - (d * d) / 4);&lt;br /&gt;
        double alpha = atan2(b, (d / 2));&lt;br /&gt;
        double tankTurn = bearing - alpha + spiral * direction;&lt;br /&gt;
&lt;br /&gt;
        setTurnRightRadians(tankTurn);&lt;br /&gt;
        setAhead(d * direction);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @see http://testwiki.roborumble.org/w/index.php?title=Radar#Wide_lock&lt;br /&gt;
     */&lt;br /&gt;
    private void lockOnTarget(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double radarTurn = normalRelativeAngle(absoluteBearing - getRadarHeadingRadians());&lt;br /&gt;
        double arcToScan = Math.min(Math.atan(36.0 / event.getDistance()), PI / 4.0);&lt;br /&gt;
        radarTurn += (radarTurn &amp;lt; 0) ? -arcToScan : arcToScan;&lt;br /&gt;
        setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void aimAndFire(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double gunTurn = normalRelativeAngle(absoluteBearing - getGunHeadingRadians());&lt;br /&gt;
        setTurnGunRightRadians(gunTurn);&lt;br /&gt;
&lt;br /&gt;
        final double power = 3.0;&lt;br /&gt;
        if (getGunHeat() == 0.0) {&lt;br /&gt;
            setFire(power);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2226</id>
		<title>Excession/DiveBomber</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=Excession/DiveBomber&amp;diff=2226"/>
		<updated>2008-06-04T22:44:42Z</updated>

		<summary type="html">&lt;p&gt;Excession: submitted code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
package excession.drones;&lt;br /&gt;
&lt;br /&gt;
import static java.lang.Math.PI;&lt;br /&gt;
import static java.lang.Math.atan2;&lt;br /&gt;
import static java.lang.Math.sqrt;&lt;br /&gt;
import static java.lang.Math.toRadians;&lt;br /&gt;
import static robocode.util.Utils.normalRelativeAngle;&lt;br /&gt;
import robocode.AdvancedRobot;&lt;br /&gt;
import robocode.ScannedRobotEvent;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A drone that spirals in towards and then circles its enemy and fires pot&lt;br /&gt;
 * shots.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Allan Halme&lt;br /&gt;
 * @version 1.0, 2008-06-04&lt;br /&gt;
 */&lt;br /&gt;
public class SpiralCircle extends AdvancedRobot {&lt;br /&gt;
&lt;br /&gt;
    private int direction = 1;&lt;br /&gt;
&lt;br /&gt;
    private void init() {&lt;br /&gt;
        setAdjustRadarForRobotTurn(true);&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void run() {&lt;br /&gt;
        init();&lt;br /&gt;
        setTurnRadarRightRadians(2 * PI);&lt;br /&gt;
        while (true) {&lt;br /&gt;
            execute();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onScannedRobot(ScannedRobotEvent event) {&lt;br /&gt;
        lockOnTarget(event);&lt;br /&gt;
        aimAndFire(event);&lt;br /&gt;
        move(event);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void move(ScannedRobotEvent event) {&lt;br /&gt;
        double bearing = event.getBearingRadians();&lt;br /&gt;
        double r = event.getDistance();&lt;br /&gt;
&lt;br /&gt;
        if (getVelocity() == 0.0) {&lt;br /&gt;
            direction *= -1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        final double SPEED = 20.0;&lt;br /&gt;
        final double DISTANCE_MAX = 50;&lt;br /&gt;
        final double DISTANCE_MIN = 40;&lt;br /&gt;
&lt;br /&gt;
        double spiral = 0;&lt;br /&gt;
        if (r &amp;gt; DISTANCE_MAX) {&lt;br /&gt;
            spiral = toRadians(45);&lt;br /&gt;
        } else if (r &amp;lt; DISTANCE_MIN) {&lt;br /&gt;
            spiral = toRadians(-5);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        double d = SPEED;&lt;br /&gt;
        final double b = sqrt(r * r - (d * d) / 4);&lt;br /&gt;
        double alpha = atan2(b, (d / 2));&lt;br /&gt;
        double tankTurn = bearing - alpha + spiral * direction;&lt;br /&gt;
&lt;br /&gt;
        setTurnRightRadians(tankTurn);&lt;br /&gt;
        setAhead(d * direction);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @see http://testwiki.roborumble.org/w/index.php?title=Radar#Wide_lock&lt;br /&gt;
     */&lt;br /&gt;
    private void lockOnTarget(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double radarTurn = normalRelativeAngle(absoluteBearing - getRadarHeadingRadians());&lt;br /&gt;
        double arcToScan = Math.min(Math.atan(36.0 / event.getDistance()), PI / 4.0);&lt;br /&gt;
        radarTurn += (radarTurn &amp;lt; 0) ? -arcToScan : arcToScan;&lt;br /&gt;
        setTurnRadarRightRadians(radarTurn);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void aimAndFire(ScannedRobotEvent event) {&lt;br /&gt;
        double absoluteBearing = getHeadingRadians() + event.getBearingRadians();&lt;br /&gt;
        double gunTurn = normalRelativeAngle(absoluteBearing - getGunHeadingRadians());&lt;br /&gt;
        setTurnGunRightRadians(gunTurn);&lt;br /&gt;
&lt;br /&gt;
        final double power = 3.0;&lt;br /&gt;
        if (getGunHeat() == 0.0) {&lt;br /&gt;
            setFire(power);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2225</id>
		<title>User:Excession</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=User:Excession&amp;diff=2225"/>
		<updated>2008-06-04T22:41:00Z</updated>

		<summary type="html">&lt;p&gt;Excession: init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bots == &lt;br /&gt;
&lt;br /&gt;
Under construction. Really.&lt;br /&gt;
&lt;br /&gt;
== Drones == &lt;br /&gt;
&lt;br /&gt;
Drones are test bots I've coded to assist me in developing bots proper. Of course I use the sample bots and other known and available bots, but these drones are programming practice for me and they do certain specific things that I want to be able to practice against.&lt;br /&gt;
&lt;br /&gt;
* '''[[Excession:SpiralCircle]]''' A drone that spirals in towards and then circles its enemy and fires pot shots.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
Robocode developer since, um, 2008.&lt;br /&gt;
&lt;br /&gt;
I set up a user page on the old wiki [http://robowiki.net/cgi-bin/robowiki?Excession] but I think I'll prefer this wiki.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bot Authors|Excession]]&lt;/div&gt;</summary>
		<author><name>Excession</name></author>
		
	</entry>
</feed>