Needed Amount To Kill
The highlighted comment was created in this revision.
As I see from your version history you don't calculate needed amount to kill the robot precisely. I use this code:
double robotEnergy = a.getEnergy();
double neededAmountToKill;
if (battleInfo.energy <= 4) {
neededAmountToKill = battleInfo.energy / 4;
} else {
neededAmountToKill = (battleInfo.energy + 2) / 6;
}
This may help you to improve SimpleBot.
Thanks for your code! I don't calculate it precisely because 1. It may gain some energy after I fire, which is unpredictable. 2. Some bullet power is better than another, for example, 2.95 is better than 3.00 as it exploits bugs in BasicSurfer. Therefore my algorithm is doing this: If and only if my current bullet power is enough to kill him, I lower my bullet power to some "Good" power which is still enough to kill him ;) Yes doing so waste a lot of energy to overkill him, meanwhile, I won't risk hitting him and leave 0.03 energy only because he hit me one more time. Anyway, I should test BOTH algorithm to see the real effect ;)
Oops, just reviewed my code. It will even try to use a higher bullet power (which is considered good) even if and only if the current power is enough to kill. This used to be a bug but now it is a feature, as it seems to improve the performance.
Say if your bot has 0.05 energy, it will try to kill you with a bullet that deals 4.00 damage, which is ridiculously.