Robots Docs
Fall 2025
API

# RobotBody

o1.robots.RobotBody
class RobotBody(val `world`: RobotWorld, `initialLocation`: GridPos, `initialFacing`: CompassDir)

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.

## Parameters

initialFacing

  the direction the robot initially faces in

initialLocation

  the initial location of the robot in its world

world

  the world inhabited by the robot

## Attributes

See also

  RobotWorld

  RobotBrain

Graph
Supertypes
  class Object
  trait Matchable
  class Any

## Members list

### Value members

#### Concrete methods

def destroy(): Unit

Causes the robot to malfunction (typically as the result of a collision). A broken robot does not do anything during its turns.

Causes the robot to malfunction (typically as the result of a collision). A broken robot does not do anything during its turns.

## Attributes

See also

  fix

def facing: CompassDir

Returns the direction the robot is currently facing in.

Returns the direction the robot is currently facing in.

## Attributes

def fix(): Unit

Repairs a broken robot. The robot can now start taking its turns normally.

Repairs a broken robot. The robot can now start taking its turns normally.

## Attributes

See also

  destroy

def isIntact: Boolean

Determines whether the robot is currently intact or not. A robot is intact unless it has been broken with the `destroy` method and not fixed since.

Determines whether the robot is currently intact or not. A robot is intact unless it has been broken with the `destroy` method and not fixed since.

## Attributes

def location: GridPos

Returns the coordinates that indicate the robot’s current location in the robot world.

Returns the coordinates that indicate the robot’s current location in the robot world.

## Attributes

def locationSquare: Square

Returns the square the robot is currently in.

Returns the square the robot is currently in.

## Attributes

def moveTowards(`direction`: CompassDir): Boolean

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)

def neighboringSquare(`direction`: CompassDir): Square

Returns a square that neighbors the robot’s current location in the given direction.

Returns a square that neighbors the robot’s current location in the given direction.

## Attributes

def spinClockwise(): Unit

Turns the robot 90 degrees clockwise.

Turns the robot 90 degrees clockwise.

## Attributes

def spinTowards(`newFacing`: CompassDir): Unit

Turns the robot to face in the specified direction.

Turns the robot to face in the specified direction.

## Attributes

def takeTurn(): Unit

Gives the robot a turn to act.

Gives the robot a turn to act.

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.

## Attributes

See also

  RobotBrain.controlTurn

#### Concrete fields

var brain: Option[RobotBrain]

the robot’s brain (if it has one)

the robot’s brain (if it has one)

## Attributes

val world: RobotWorld