I used to have a lot of fun coding my own robot with Robocode in college.
It is Java based, the API is detailled and it's pretty easy to get a challenging robot up and running.
Here is an example :
public class MyFirstRobot extends Robot {
public void run() {
while (true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}
}