# UbaNano

Robo Home | Changes | Preferences | AllPages

Could someone have a look at this code? I am so confused... I think this should have UbaNano (which isn't Nanosized yet, by the way) shoot at bullets that are fired with HOT and make them collide! But it doesn't work. What is wrong?

```package bayen;
import robocode.*;
import java.awt.geom.Point2D;
import robocode.util.Utils;

/**
* UbaNano - a robot by Bayen
*/
public class UbaNano extends AdvancedRobot
{
static double thenEnergy;
static double nowEnergy;
static double FORWARD = 1;
/**
* CrazyTracker2's run method
*/
public void run() {
thenEnergy=100;
nowEnergy=100;
while (true)
{
}
}
/**
* onScannedRobot:  We have a target.  Go get it.
*/
public void onScannedRobot(ScannedRobotEvent e) {
thenEnergy = nowEnergy;
nowEnergy = e.getEnergy();
setTurnRight(e.getBearing() + 90);
if(thenEnergy>nowEnergy){
FORWARD = -FORWARD;
}
//here I get my enemy's statistics so that I can use
//linear targeting
double bulletPower = 0.1;
double myX = getX();
double myY = getY();
double absoluteBearing =
double enemyX = getX()
+ e.getDistance() * Math.sin(absoluteBearing);
double enemyY = getY()
+ e.getDistance() * Math.cos(absoluteBearing);
double enemyVelocity = 20 - 3*(thenEnergy-nowEnergy);
//now I do my calculations for linear targeting so that
//I know where my enemy will be once my bullet gets there
double deltaTime = 0;
double battleFieldHeight=
getBattleFieldHeight(),battleFieldWidth=
getBattleFieldWidth();
double predictedX = enemyX, predictedY = enemyY;
while((++deltaTime)*(20.0
- 3.0*bulletPower)
<Point2D.Double.distance(myX, myY, predictedX, predictedY)){
* enemyVelocity;
* enemyVelocity;
if(	predictedX < 18.0
|| predictedY < 18.0
|| predictedX > battleFieldWidth - 18.0
|| predictedY > battleFieldHeight - 18.0){
predictedX =
Math.min(Math.max(18.0, predictedX), battleFieldWidth
- 18.0);
predictedY =
Math.min(Math.max(18.0, predictedY), battleFieldHeight
- 18.0);
bulletPower=0;
break;}}
double theta =
Utils.normalAbsoluteAngle(Math.atan2(predictedX
- getX(), predictedY - getY()));
//now I can turn my gun...
(Utils.normalRelativeAngle(absoluteBearing
//...and fire!
if(nowEnergy < thenEnergy)
fire(bulletPower);
}
public void onBulletHitBullet(BulletHitBulletEvent e){
out.println("WORKED");
}
}
```

Have you read BulletShielding? -- Tango

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited December 30, 2005 15:12 EST by Tango (diff)
Search: