FightCodeGame ?
From RoboWiki
Fragment of a discussion from Talk:Main Page
I didn't compile this so there may be a few minor errors. Thanks again.
/* Epeeist v2.0.0 by Sheldor. 03/19/2013 A NanoBot with multi-mode movement and a Pattern Matching gun. Codesize: ??? Bytes without any colors. Epee (pronounced aay-pay) is one of the three forms of modern sport fencing, along with Foil and Sabre. http://en.wikipedia.org/wiki/Epee Credits: Pattern Matching code from simonton.WeekendObsession_S and mld.Moebius, and a general thanks to all open source bot authors and contributors to the RoboWiki. Epeeist is open source and released under the terms of the RoboWiki Public Code License (RWPCL) - Version 1.1 see license here: http://robowiki.net/wiki/RWPCL */ package sheldor.nano; import robocode.*; import robocode.util.Utils; public class Epeeist extends AdvancedRobot { //Global variables. static double direction; static double enemyEnergy; static int deathCount; //En garde! public void run() { //setAdjustGunForRobotTurn(true); //Start spinning radar and initialize direction to infinity. setTurnRadarRightRadians(direction = Double.POSITIVE_INFINITY); } public void onScannedRobot(ScannedRobotEvent e) { //Local variables. int matchLength = 30; double absoluteBearing; double distance; int i; int index; //Oscillating/Random movement. if (enemyEnergy > (enemyEnergy = e.getEnergy())) //if((enemyEnergy - (enemyEnergy = e.getEnergy())) > (Math.round(Math.random() * chancesOfReversing.charAt(deathCount)) * 111)) //if( (char) ((enemyEnergy - 1.09 - (enemyEnergy = e.getEnergy()))) < 2) { direction *= (chancesOfReversing.charAt(deathCount) - Math.random()); //direction *= (chancesOfReversing.charAt(deathCount) - (Math.random() * 2)); } setAhead(direction); //Stay perpendicular to the enemy. setTurnRightRadians(Math.cos(absoluteBearing = e.getBearingRadians()) + ((160 - (distance = e.getDistance())) * (getVelocity() / 2500))); //Pattern Matching. /*enemyHistory = String.valueOf((char) (e.getVelocity() * (Math.sin(e.getHeadingRadians() - (absoluteBearing += getHeadingRadians()))))).concat(enemyHistory); // search for a match while((matchPosition = enemyHistory.indexOf(enemyHistory.substring(0, integer--), 14)) < 0); // calculate aim offset integer = 14; do { absoluteBearing += ((short) enemyHistory.charAt(--matchPosition)) / 160; } while (--integer > 0);*/ //Pattern Matching enemyHistory = String.valueOf((char)(e.getVelocity() * Math.sin(e.getHeadingRadians() - (absoluteBearing += getHeadingRadians())))).concat(enemyHistory); while((index = enemyHistory.indexOf(enemyHistory.substring(0, matchLength--), (i = (int)(distance / 12.5)))) < 0); do { absoluteBearing += (short)enemyHistory.charAt(index--) / distance; }while(--i > 0); //Aim at the predicted target. setTurnGunRightRadians(Utils.normalRelativeAngle(absoluteBearing - getGunHeadingRadians())); //Fire! setFire(2.5); //Infinite radar lock. setTurnRadarLeftRadians(getRadarTurnRemainingRadians()); } public void onDeath(DeathEvent e) { deathCount++; } public void onHitWall(HitWallEvent e) { //Reverse direction when the bot hits a wall. direction = -direction; } static String chancesOfReversing = "" + (char) 1 + (char) 0 + (char) 1 + (char) 0 + (char) 1 + (char) 0 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5 + (char) .5; //Preloaded log of enemy movements for pattern matcher. static String enemyHistory = "" + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 2 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char)-1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char) 1 + (char)-2 + (char)-4 + (char)-6 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-8 + (char)-7 + (char)-6 + (char)-5 + (char)-4 + (char)-3 + (char)-2 + (char)-1 + (char)1 + (char) 2 + (char) 4 + (char) 6 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 8 + (char) 7 + (char) 6 + (char) 5 + (char) 4 + (char) 3 + (char) 2 + (char) 1 + (char) 1; }