The class RobotBody represents virtual robots (or “bots”) which inhabit two-dimensional grid worlds. More specifically, each instance of the class represents a “robot body” (or “chassis” or “hardware”) and basic functionality of such a robot. Each “robot body” is associated with a “robot brain” that controls the body and determines what functionality is activated and when.
A robot is equipped with various capabilities:
It can sense its own surroundings (location, facing, the world that it is in).
It can spin around in any one of the four main compass directions.
It can move into the next square in a given direction.
It can sense whether it is broken or not, and whether it is “stuck” in a square between four walls.
When a robot’s takeTurn method is called, it uses its “brain” to figure out what to do (move, turn about, etc.). Robots with different kinds of brains behave differently.
Relocates the robot within its current world to the square next to the robot’s current location, in the given direction. The direction does not necessarily have to be the same one that the robot is originally facing in.
Relocates the robot within its current world to the square next to the robot’s current location, in the given direction. The direction does not necessarily have to be the same one that the robot is originally facing in.
This method turns the robot to face in the direction it moves in.
Two robots can never be in the same square; neither can a robot and a wall. If the robot’s would-be location is not empty, a collision occurs instead and the robot does not change locations (but still turns to face whatever it collided with).
If the moving robot collides with a wall, the robot itself breaks. If a moving robot collides with another robot, the other robot breaks and the moving robot stays intact.
Attributes
Returns
true if the robot successfully changed locations, false if it did not (even if it changed facing)
A broken robot does nothing during its turn; a brainless robot likewise does nothing. An intact robot with a brain consults its brain to find out what to do with its turn. It does that by calling the brain’s controlTurn method.