Thread history

From RoboWiki
Fragment of a discussion from Talk:Main Page
Viewing a history listing
Jump to: navigation, search
descTime User Activity Comment
No results

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;
}
Sheldor15:59, 19 March 2013
Personal tools