[Home]Squirrel/Source

Robo Home | Squirrel | Changes | Preferences | AllPages

Difference (from prior major revision) (minor diff)

Changed: 1,193c1,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)));
}

}


/Bot
/Gun
/Movement

/Bot /Gun /Movement

Robo Home | Squirrel | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited September 17, 2006 22:49 EST by Bayen (diff)
Search: