"Build the best. Destroy the rest."
Robocode is a java learning tool/game developed by Mathew Nelson at IBM. It has it's own simple IDE as well as a battlefield simulation, just add a Java2 SDK and you're ready to code the killer bot. The robots are simulated tanks complete with spinning turrets and radar. The tanks chosen to do battle are placed in a square field in random starting positions, and then fight it out until there is only one left.
Robocode is designed to teach all aspects of object-oriented programming using Java. It has its own API with an extensive class hierarchy. Robocode comes with quite a few sample robots ranging from "SittingDuck" to "Crazy" to demonstrate simple behavior. The budding robocoder starts with the basic robocode.Robot class and writes code to handle every event that might occur in battle. The bot has to be told what to do if it hits a wall, runs into another tank, gets hit by a bullet, etc. Code must be written to tell the robot when and how far to turn the turret, when to fire and how much power to use for the shot, and how to lead a moving target. In the course of figuring all of this out, the programmer is supposed to learn about inheritance, event handling and polymorphism, and hopefully have fun doing it.
Robocode is still being actively developed, but Nelson is the only programmer working on it. He is getting plenty of feedback as the number of users increases, and Robocode has become popular enough in some circles that leagues are forming to allow people to test their robot creations against those of other people over the internet. Future versions are expected to include customizable battlefields with obstacles, team-based battles, integrated support for leagues and tournaments, and customizable tank styles.