Difference between revisions of "Thread:Talk:Main Page/FightCodeGame ?/reply (23)"
Jump to navigation
Jump to search
(Reply to FightCodeGame ?) |
(Oops.) |
||
Line 62: | Line 62: | ||
//Pattern Matching. | //Pattern Matching. | ||
− | enemyHistory = String.valueOf((char) (e.getVelocity() * (Math.sin(e.getHeadingRadians() - (absoluteBearing += getHeadingRadians()))))).concat(enemyHistory); | + | /*enemyHistory = String.valueOf((char) (e.getVelocity() * (Math.sin(e.getHeadingRadians() - (absoluteBearing += getHeadingRadians()))))).concat(enemyHistory); |
// search for a match | // search for a match |
Revision as of 20:03, 19 March 2013
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 integer = 30;
double absoluteBearing;
double distance;
int matchPosition;
//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());
//onHitWall(null);
}
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)(e.getDistance() / 12.5)))) < 0);
do
{
absoluteBearing += (short)enemyHistory.charAt(index--) / e.getDistance();
}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;
}