Mr. Daniel, sir, welcome to the wiki. Tell us a little about yourself! -- Simonton
Welcome to the wiki! Have a good time here. -- Stelokim
Welcome! Feel free to post any questions you have, I think we're usually a fairly helpful bunch. =) -- Voidious
Destroying the sample bots are the best way to start out. --Chase-san
Yes, welcome Daniel! Hehe.. destroying the sample robots can be harder than you think.. especially in a melee battle against all sample robots at the same time! ;-) --Fnl
I guess I'm writing a comment to myself right now but I couldn't think of a better place to put an open question (is there a page for this? I couldn't find a sort of [Village pump] page but if I just missed it let me know). Anyways, adding up results in robocode seems to leave me out by 1. As in, (Total score - sumOf(everything else except 1st, 2nd, 3rd) == -1) is always true. Can anyone explain this to me? --Daniel
Aug 13, 2007 12:09:09 PM Results for 10 rounds Rank,Robot Name,Total Score,Survival,Surv Bonus,Bullet Dmg,Bullet Bonus,Ram Dmg * 2,Ram Bonus, 1sts , 2nds , 3rds 1st,sample.Walls,8721,4850,840,2668,342,20,0,7,0,0 2nd,sample.SpinBot,7675,4400,240,2785,191,59,0,2,4,1 3rd,sample.Tracker,5947,4050,0,1687,172,32,5,0,0,5 4th,sample.TrackFire,5501,2950,0,2298,253,0,0,0,3,0 5th,sample.MyFirstJuniorRobot,4642,3350,120,1056,80,36,0,1,0,1 6th,sample.Crazy,4377,3450,0,794,16,116,0,0,1,2 7th,sample.Fire,4313,2900,0,1315,94,4,0,0,2,0 8th,sample.MyFirstRobot,3612,2850,0,699,28,35,0,0,0,0 9th,sample.Corners,3299,2300,0,972,24,2,0,0,0,1 10th,sample.RamFire,2983,1250,0,1168,34,448,83,0,0,0 11th,sample.Target,2411,2400,0,0,0,11,0,0,0,0 12th,sample.SittingDuck,2100,2100,0,0,0,0,0,0,0,0 13th,sample.Interactive,2050,2050,0,0,0,0,0,0,0,0 $ Aug 13, 2007 12:20:06 PM Results for 10 rounds Rank,Robot Name,Total Score,Survival,Surv Bonus,Bullet Dmg,Bullet Bonus,Ram Dmg * 2,Ram Bonus, 1sts , 2nds , 3rds 1st,sample.Walls,9637,5550,960,2732,340,40,16,8,0,0 2nd,sample.SpinBot,8905,4900,240,3399,312,54,0,2,4,1 3rd,sample.Tracker,7137,4150,0,2548,315,124,0,0,1,3 4th,sample.Fire,4993,3800,0,1129,59,4,0,0,1,1 5th,sample.Corners,4827,3500,0,1240,87,0,0,0,1,1 6th,sample.Crazy,3930,3200,0,646,1,83,0,0,1,2 7th,sample.MyFirstJuniorRobot,3734,2800,0,857,39,38,0,0,1,0 8th,sample.MyFirstRobot,3648,3050,0,575,10,12,0,0,1,2 9th,sample.RamFire,3358,1650,0,1196,12,428,71,0,0,0 10th,sample.TrackFire,2896,1600,0,1234,62,0,0,0,0,0 11th,sample.SittingDuck,1850,1850,0,0,0,0,0,0,0,0 12th,sample.Target,1710,1700,0,0,0,10,0,0,0,0 13th,sample.Interactive,1250,1250,0,0,0,0,0,0,0,0 $
And here's my analysis of the total score minus the sum of the rest (excluding number of 1st, 2nd, and 3rd places):
1st->sample.Walls (8721): -1 2nd->sample.SpinBot (7675): 0 3rd->sample.Tracker (5947): -1 4th->sample.TrackFire (5501): 0 5th->sample.MyFirstJuniorRobot (4642): 0 6th->sample.Crazy (4377): -1 7th->sample.Fire (4313): 0 8th->sample.MyFirstRobot (3612): 0 9th->sample.Corners (3299): -1 10th->sample.RamFire (2983): 0 11th->sample.Target (2411): 0 12th->sample.SittingDuck (2100): 0 13th->sample.Interactive (2050): 0 1st->sample.Walls (9637): 1 2nd->sample.SpinBot (8905): 0 3rd->sample.Tracker (7137): 0 4th->sample.Fire (4993): -1 5th->sample.Corners (4827): 0 6th->sample.Crazy (3930): 0 7th->sample.MyFirstJuniorRobot (3734): 0 8th->sample.MyFirstRobot (3648): -1 9th->sample.RamFire (3358): -1 10th->sample.TrackFire (2896): 0 11th->sample.SittingDuck (1850): 0 12th->sample.Target (1710): 0 13th->sample.Interactive (1250): 0Here's what I'm using to test the results (PHP):
$x = file('asdf.csv'); foreach ($x as $line) { $line = trim($line); $line = explode(',', $line); if (count($line) != 12 || $line[0] == 'Rank') continue; echo $line[0].'->'.$line[1].' ('.$line[2].'): '; $sum = -$line[2]; for ($i=3; $i<=8; $i++) $sum += $line[$i]; echo $sum."\n"; }Results are -totalscore + sumof(everything else). For some lazy reason :-) Still shows a weird offset. --Daniel
// In robocode.battle.BattleResultsTableModel?:
public Object getValueAt?(int row, int col) { // ...
ContestantStatistics? statistics = r.getStatistics();
// ...
case 2: return "" + (int) (statistics.getTotalScore?() + 0.5); case 3: return "" + (int) (statistics.getTotalSurvivalScore?() + 0.5); case 4: return "" + (int) (statistics.getTotalLastSurvivorBonus?() + 0.5); // etc ... }
// In robocode.peer.ContestantStatistics?: public interface ContestantStatistics? { public double getTotalScore?(); public double getTotalSurvivalScore?(); public double getTotalLastSurvivorBonus?(); // etc ... }
So all of the doubles are being summed and rounded to the nearest integer, which would certainly explain off-by-one errors in the output (i.e. 0.3 gets rounded to 0 but 0.3 + 0.3 = 0.6 rounds to 1). -- AaronR
I am sorry that I saw this discusion too late, because I would be able to answer it very quickly. You are right AaronR, it is the roundings that causes the "trouble". I don't think it makes sense to write out floating point values. The table with the results would get VERY wide, and the general idea of the result table is ;just" to present the results in a "human readable way", not the exact scores. ;-) --Fnl
Another open question! What's the difference between these two?
setTurnRight(90); setAhead(100); execute(); while (getDistanceRemaining() != 0 && getTurnRemaining() != 0) { execute(); }and:
setTurnRight(90); setAhead(100); execute();Thanks! --Daniel
setTurnRight(90); setAhead(100);
(without the execute) is also functionally equivalent if that's all you have in your bot. -- Simonton