Difference between revisions of "Thread:Talk:Main Page/FightCodeGame ?/reply (23)"

From Robowiki
Jump to navigation Jump to search
(Oops.)
(Oops again.)
 
Line 43: Line 43:
 
{
 
{
 
//Local variables.
 
//Local variables.
int integer = 30;
+
int matchLength = 30;
 
double absoluteBearing;
 
double absoluteBearing;
 
double distance;
 
double distance;
int matchPosition;
+
int i;
 +
int index;
 
 
 
//Oscillating/Random movement.
 
//Oscillating/Random movement.
Line 54: Line 55:
 
{
 
{
 
direction *= (chancesOfReversing.charAt(deathCount) - Math.random());
 
direction *= (chancesOfReversing.charAt(deathCount) - Math.random());
//onHitWall(null);
+
//direction *= (chancesOfReversing.charAt(deathCount) - (Math.random() * 2));
 
}
 
}
 
setAhead(direction);
 
setAhead(direction);
Line 73: Line 74:
 
//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);
while((index = enemyHistory.indexOf(enemyHistory.substring(0, matchLength--), (i = (int)(e.getDistance() / 12.5)))) < 0);
+
while((index = enemyHistory.indexOf(enemyHistory.substring(0, matchLength--), (i = (int)(distance / 12.5)))) < 0);
 
do
 
do
 
{
 
{
absoluteBearing += (short)enemyHistory.charAt(index--) / e.getDistance();
+
absoluteBearing += (short)enemyHistory.charAt(index--) / distance;
 
}while(--i > 0);
 
}while(--i > 0);
 
 

Latest revision as of 20:47, 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 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;
}