BZRobots/API

From BZFlagWiki
Revision as of 07:11, 15 August 2009 by Bulldozer (Talk | contribs)

Jump to: navigation, search

Overview

This page describes the API for the BZRobots Programmable Computer Player Client.


The BZRobots API is based heavily on the robocode project. It is class-based, meaning that a robot is built by extending from one of the following two classes:

  • Robot (An easy-to-use robot with a simplified API, e.g. degree units, etc.)
  • AdvancedRobot (A robot with more advanced features in the API, e.g. radian units, etc.)


The main control loop is created by overriding the class method run, and then using the methods shown below to control the robot. These control methods fit into two categories 'blocking', and 'non-blocking'. A blocking function, once called, will not return until either the requested action has completed, or the amount of time allotted for a "turn" or "tick" has passed - whichever comes later.

Non-blocking functions will return immediately, allowing for additional processing, but their actions do not take effect immediately; rather, they will take place when the execute method is called. After a blocking function has been called, various "events" that have been generated during that turn may be processed by the various event methods, if they have been overridden.


Note: As BZRobots currently supports bot scripts written in three different languages, the following is a C-style, but language independent description of the methods available for bot development.

==BZRobot Methods==
Method Description Blocking Robot Advanced
Robot
Robocode
Compatible
Functional
Status
void ahead(double distance) Moves the robot ahead by distance Y Y Y Y 100%
void back(double distance) Moves the robot back by distance Y Y Y Y 100%
void doNothing() Does nothing (equivalent of a short sleep) Y Y Y Y 100%
void fire() Fires a single shot Y Y Y Y 100%
double getBattleFieldLength() Returns the length of the battle field N Y Y N/A (*) 100%
double getBattleFieldWidth() Returns the width of the battle field N Y Y Y 100%
double getGunCoolingRate() Returns the time it takes to reload a single shot N Y Y Y (*) 100%
double getGunHeading() Returns the heading of the gun (Will always be the same as the robot's heading) N Y Y Y 100%
double getGunHeat() Returns the time until the gun will be ready to fire N Y Y Y (*) 100%
double getHeading() Returns the current heading of the robot N Y Y Y 100%
double getHeight() Returns the height (Z-size) of the robot N Y Y N (*) 100%
double getLength() Returns the length (Y-size) of the robot N Y Y N/A (*) 100%
string getName() Returns the name (Callsign) of the robot N Y Y Y 100%
double getTime() Returns the current game time N Y Y Y (*) 100%
double getWidth() Returns the width (X-size) of the robot N Y Y Y (*) 100%
double getVelocity() Returns the speed of the robot (excluding the Z-speed) N Y Y Y 100%
double getX() Returns the current X coordinate of the robot N Y Y Y 100%
double getY() Returns the current Y coordinate of the robot N Y Y Y 100%
double getZ() Returns the current Z coordinate of the robot N Y Y Y 100%
void resume() Resumes any movements saved by a previous call to stop N Y Y Y 100%
void scan() Prompts a radar scan, resulting in onScannedRobot events Y Y Y Y 100%
void stop(bool overwrite = false) Stops the robot, saving any current movements N Y Y Y 100%
void turnLeft(double degrees) Turns the robot left degrees degrees Y Y Y Y 100%
void turnRight(double degrees) Turns the robot right degrees degrees Y Y Y Y 100%
Method Description Blocking Robot Advanced
Robot
Robocode
Compatible
Functional
Status
void onBattleEnded(BattleEndedEvent e) Called at the end of a league match, or the server shutting down N/A Y Y N 0%
void onBulletHit(BulletHitEvent e) Called when a bullet fired by the robot hits another robot N/A Y Y N 0%
void onBulletMissed(BulletMissedEvent e) Called when a bullet fired by the robot expires or hits a wall N/A Y Y N 0%
void onDeath(DeathEvent e) Called when the robot dies N/A Y Y Y 100%
void onHitByBullet(HitByBulletEvent e) Called when the robot is hit by a bullet N/A Y Y Y 0%
void onHitWall(HitWallEvent e) Called when the robot runs into a wall or object N/A Y Y Y 90%
void onRobotDeath(RobotDeathEvent e) Called when the robot is killed N/A Y Y N 0%
void onScannedRobot(ScannedRobotEvent e) Called each turn as the robot's radar "sees" another robot N/A Y Y Y (*) 90%
void onSpawn(SpawnEvent e) Called when the robot spawns N/A Y Y Y Y
void onStatus(StatusEvent e) Called at the beginning of each "turn", before the main loop is run N/A Y Y N 20%
void onWin(WinEvent e) Called when the robot (or it's team) wins a league match N/A Y Y N 0%

See Also

BZRobots/Ideas - Ideas for a possible future release