How does it dodge bullets?
1.It changes direction or speed when a bullet comes near.
2.It moves randomly.
3.It stops/starts when a bullet comes near.

How does the melee strategy differ from one-on-one strategy?
It doesn't have any Melee strategy.

Where did you get the name?
At the Internet i am called Krabb, dont ask me why :) And because the robot is so week he got the y.
An other reason is, that he moves like a crab and Krabb sounds like crab -.-

Nice ranking ;) Yet the idea of plugging RandomTargeting into VirtualGuns array sounds crazy to me. Can you do any statistics how often is this targeting actually chosen? --lRem

I have not a real statistic, but when the enemy is in an distance of 150 to 450 the RandomTargeting gun has a high hit rate. Of corse itīs bot specific, but most often the hit rate is idetical with the HeadOnTagreting? Gun. And i think this is logical: The movement of and bot is good, when you could not predict it. So its random. And if the movent is randomly its regardles if you aim with an special gun ore just randomly. And i think some times a random gun is better then an other gun, because the enemy can not predict at which angle you have aimed,
and so he could not avoid. And may bee the random gun confuses the wavesurfing of the enemy :), so that you will hit more often with your other guns in future.

My RandomTargeting gun is not so good. It is realy random, i think it could bee much better, if you chose lower angels more often than higher ones. I implemented this Random gun in 5 minutes, and i am impressed of itīs effect too. And i have to thank you, i discovered a bug in my gun because of your question =) --Krabb

I don't find it a strange idea, I planned on doing it myself. I remember the relative outstanding performance of wiki.Shark (see SharkChallenge) against the topbots. For the 'easy' targets you already have adequate guns, but any improvement against (sub)topbots are more than welcome. You are really breathing in my neck by the way, so I think I make a quick release and hope that it reaches my goal.

I think you should check your energymanagement. I saw two things: It seems that Krabby does not kill disabled opponents. If you let your bulletpower depend on the enemies energy and that energy is zero, you just dance around. Second, it seems that Krabby disables himself by firing. If you hold fire when your energy is (very) low, you have some better chance on survival. These two things do not get you to ranking 100, but every point is welcome -- GrubbmGait

Thx for your testing, Krabby shuld ram his enemy, when he has low energy. But there seems to bee a Bug. And i have to change my low energy energymanagement thats true. And your Bot shuld not use circular movement so often. I think Krabby beats it so good because of that.

You can take your time to release your new version, my holidays are now over :( So i have to hope, that Krabby1.11 gets in the top 100, but i dont think so :(
--Krabb

Against approx 50 bots (mostly HOT and LT) the circular movement is my best movement, it is the movement selection/evaluation that should be better. When I complete my movement under development (orbital including Musashi-trick and sortalike trick for LT and CT-guns) the circular movement should become obsolete. Because the criteria are better testable, this new movement should not contaminate the results as much as my current movement-scheme. Nice dodge-movement by the way. -- GrubbmGait

Congratulations on entering the top-100! You did it much quicker than me, it costed me only 8 months :-p I'm looking forward to your team! -- GrubbmGait

Thanks, but i think you must wait a bit, to see my team. My java knowledge is so bad :( After i searched 1 hour to find a bug i noticed that you could not compare the value of two strings with == --Krabb

I you want to use a stringcompare in Teams to check whether a scanned bot is one of yours, DON'T ! You should use isTeamMate?( e.getName()), a function available in TeamRobot. -- GrubbmGait

Because it is much much easier this way, in Teams that is. Ofcourse for any other reason you should use ".equals()", but I was affraid that you were inventing the wheel. -- GrubbmGait

Just being nitpicky here...Actually you *might* be able to compare two strings using ==. Strings are immutable objects, i.e. once constructed they can never change value. One bonus of this is that it is possible in a closed system to ensure that no separate string objects with duplicate values exist, and therefore == is true if and only if the two strings have equal values. Thus if you get the enemy names from onScannedRobot events and store them in your opponents list by reference, i.e. do NOT copy construct a new String object, it is very likely it will be safe to compare names in a later e.g. onBulletHit? event using == vs. the names in your list. I would be very disapointed in Robocode if it created new String objects for its events rather than simply passing a reference to the already existing string object.

Having said that though, equals() is definitely safer if you are in any doubt. Especially if either of the strings in your comparison comes from "somewhere else", i.e. read in from a file, unless you take precautions duplicate string objects would be expected to be created. And it is also possible (although I haven't been able to confirm this, would be interested if anybody knows a definitive answer) that the equals() method does == as its own first check, thus removing any performance gain from you using == in cases where it is safe. -- Shrubbery