"Team Ball" consists solely of me, Allen Ball. Hal is my entry into the ICFP 2002 Programming Contest. I named my robot "Hal" because "2001: A Space Odyssey" (specifically, "I can't do that, Dave") was all I could think of as I worked on the exercise. It was also all the wit and whimsey I could muster after staying up all night Sunday to finish. Hal is implemented in Java and my entry may be found here. The javadoc may be found here. I chose Java because it has been the language I have been using lately and because I have no Redhat Linux 7.3 PCs at my disposal so I needed the "write once, debug^H^H^H^H^Hrun everywhere" capabilities of Java.
The Java code is divided into the following packages:
There is only one [slightly more than] nontrivial Strategy implementation: "PlanA." This is a direct result of running out of time to work on "PlanB." The "PlanA" algorithm is very simple. For the player robot turn, it decides an action as follows:
Hal will double his bid if he wants to drop packages and if an opponent could move into his tile but his baseline bid is always one so this may be of little effect.
Time ran out before I could implement even the most basic self-preservation rules in Hal's strategy. Therefore, I do not expect Hal to fare well against "belligerent" robotic competition.
Finally, I was able to implement some protocol tracing and monitoring capabilities. To watch the raw communications between the client and the game server, specify "-Dtrace=true" to the java command line. To see a graphical representation of the game board and the known status of all robots, specify "-DuseGUI=true" on the java command line. (Otherwise, the client (as submitted) will run quietly.) This can be most easily done by uncommenting the assignment of the OPTIONAL_JAVA_ARGS environment variable in the "runme" script. An example command line is:
java -DuseGUI=true -Dtrace=true -jar lib/player.jar icfp1.cse.ogi.edu 22103