[Home]Squirrel/Source

Robo Home | Squirrel | Changes | Preferences | AllPages

Showing revision 3
package bayen;
import robocode.*;
import java.awt.Color;
import java.util.*;
import java.awt.geom.*;

/**
 *   _________            .__                      .__   
 *  /   _____/ ________ __|__|_____________   ____ |  |  
 *  \_____  \ / ____/  |  \  \_  __ \_  __ \_/ __ \|  |  
 *  /        < <_|  |  |  /  ||  | \/|  | \/\  ___/|  |__
 * /_______  /\__   |____/|__||__|   |__|    \___  >____/
 *         \/    |__|                            \/      
 *                           ii....;;..iiii..        
 *                        ffLLffGGffLLff..          
 *                      iiGGLLffLLffLLffffttii..    
 *                  ..ttffjjttiiiiiittttLLLLtt      
 *                  ttGGttttii;;;;;;;;;;;;ttLLLL..  
 *                ..LLttiiii,,..........;;;;ttfftt  
 *                ttttii;;;;;;......;;::;;;;iiLLLL  
 *      ..      ..ii;;;;;;;;;;::;;iiiiiiii;;iiffDDii
 *  ..iittiitt;;iitttt;;;;;;;;;;LLttttLLLLttttttGGff
 *  iiiittiitt;;;;ffii....;;;;ff..    ..ffLLGGLLDDtt
 *  ;;ttiiii;;tt;;ttii::..;;;;LL,,        ;;DDDDEE;;
 *  ttiiiiiittttii;;ff;;......jjii          LLKKGG  
 *  ;;LLiiffLLiitt,,LL;;;;....;;iiff..      ;;DDjj  
 *  ;;ffttiiiiLLtt;;LL;;,,......;;iiGG;;      ff..  
 *    iiffttKK##LL;;iiffjj;;....::;;ttjjtt..  ;;    
 *      ttff##WWffii....;;LL;;......iiLLGGii        
 *    ..iiKKLLLLGGii......tttt;;......iijjtt        
 *  ;;iiffLLLLttjjtt..;;..,,ttii......;;iiff        
 *  ffffffLLLLtt..ttiiffttii;;tt,,......;;LL        
 *  iiffLLffjjiiLLffttff;;::tttt;;....,,;;jj..      
 *  jjjjLLiiffjj;;ttLL......;;ffjj....;;;;ff..      
 *  ..ttjj;;......iiii......,,iiff;;,,;;ttLL        
 *    ttiiii......tt;;......,,ttffttiittffff        
 *    tt;;tt......tt;;......::ttLLffffLLGG;;        
 *    iiiiff;;....tttt;;..;;;;jjDDGGGGGGii          
 *    ..jjGGLLttiittGGttiiGGLLLLGGKKEE;;            
 *    ;;ttttLLGGii;;......iijj;;                    
 *    ffLLLLGGttii;;ttii;;;;                        
 *    ....;;ttjjffii..                              
 *          ......                                  
 *
 * __________         __________                             
 * \______   \___.__. \______   \_____  ___.__. ____   ____  
 *  |    |  _<   |  |  |    |  _/\__  \<   |  |/ __ \ /      *  |    |   \\___  |  |    |   \ / __ \\___  \  ___/|   |    *  |______  // ____|  |______  /(____  / ____|\___  >___|  /
 *         \/ \/              \/      \/\/         \/     \/ 
 */
public class Squirrel extends AdvancedRobot
{
	AcornSlingshot slingshot;
	FleetFeet feet;
	/**
	 * run: Squirrel's default behavior
	 */
	public void run() {
		setBodyColor(Color.lightGray);
		setGunColor(Color.lightGray);
		setRadarColor(Color.darkGray);
		setScanColor(Color.red);
		setBulletColor(Color.green);
		slingshot = new AcornSlingshot(this);
		feet = new FleetFeet(this);
		setAdjustGunForRobotTurn(true);
		setAdjustRadarForGunTurn(true);
		turnRadarRight(Double.POSITIVE_INFINITY);
	}

	/**
	 * onScannedRobot: What to do when you see another robot
	 */
	public void onScannedRobot(ScannedRobotEvent e) {
		slingshot.onScannedRobot(e);
		feet.onScannedRobot(e);
		setTurnRadarLeft(getRadarTurnRemaining());
	}

	/**
	 * onHitByBullet: What to do when you're hit by a bullet
	 */
	public void onHitByBullet(HitByBulletEvent e) {
		feet.onHitByBullet(e);
	}
	
	public void onHitWall(HitWallEvent e) {
		feet.onHitWall(e);
	}
	public void onHitRobot(HitRobotEvent e) {
		feet.onHitRobot(e);
	}
}

package bayen;
import robocode.*;
import java.util.*;
import java.awt.geom.*;

/**
 * AcornSlingshot - Squirrel's gun
 */
public class AcornSlingshot
{
	AdvancedRobot Squirrel;
	ScannedRobotEvent lastScan;
	
	public AcornSlingshot(AdvancedRobot robot) {
		Squirrel = robot;
	}
	
	public void onScannedRobot(ScannedRobotEvent e) {
		double lastEnemyHeading = lastScan.getHeadingRadians();
		double w=e.getHeadingRadians()-lastEnemyHeading;
		double absbearing=e.getBearingRadians()+
		Squirrel.getHeadingRadians();
		double eX=e.getDistance()*Math.sin(absbearing);
		double eY=e.getDistance()*Math.cos(absbearing);
		double db=0;
		double ww=lastEnemyHeading;
		do{
			db+=11;
			double dx=e.getVelocity()*Math.sin(ww);
			double dy=e.getVelocity()*Math.cos(ww);
			ww+=w;
			eX+=dx;
			eY+=dy;
		}while (db< Point2D.distance(0,0,eX,eY));
		Squirrel.setTurnGunRightRadians(Math.asin
		(Math.sin(Math.atan2(eX, eY)
		- Squirrel.getGunHeadingRadians())));
		
		Squirrel.setFire(3);
		lastScan = e;
	}
	private double normalRelativeAngle(double angle) {
        angle = Math.toRadians(angle);
        return Math.toDegrees(Math.atan2(
               Math.sin(angle), Math.cos(angle))); 
    }
}

package bayen;
import robocode.*;
import java.util.*;
import java.awt.geom.*;

/**
 * FleetFeet - Squirrel's movement
 */
public class FleetFeet
{
	AdvancedRobot Squirrel;
	double dir = 1;
	ScannedRobotEvent lastScan;
	
	public FleetFeet(AdvancedRobot robot) {
		Squirrel = robot;
	}
	
	public void onScannedRobot(ScannedRobotEvent e) {
		if(e.getDistance()<=151){
			double dif = lastScan.getEnergy() - e.getEnergy();
			if(dif<=3 && dif>0)
			dir=-dir;
		}
		Squirrel.setTurnRight(normalRelativeAngle(
		e.getBearing()+90-20*dir*
		(e.getDistance()<(75+Math.random()*75)?-1:1)));
		Squirrel.setAhead(100*dir);
		lastScan = e;
	}
	
	public void onHitWall(HitWallEvent e) {
		dir=-dir;
	}
	public void onHitRobot(HitRobotEvent e) {
		dir=-dir;
	}
	public void onHitByBullet(HitByBulletEvent e) {
		System.out.println("hit");
	}
	private double normalRelativeAngle(double angle) {
        angle = Math.toRadians(angle);
        return Math.toDegrees(Math.atan2(
               Math.sin(angle), Math.cos(angle))); 
    }
	
}


Robo Home | Squirrel | Changes | Preferences | AllPages
Edit revision 3 of this page | View other revisions | View current revision
Edited September 17, 2006 1:08 EST by Bayen (diff)
Search: