RobotBrain
The trait RobotBrain
represents the “brains” (or artificial “intelligence”) of virtual
robots that inhabit two dimensional grid worlds. A robot brain is equipped with an algorithm
for determining what a robot should do during its turn in a robot simulation. In other words,
a robot brain is capable of controlling the actions of a robot body.
Concrete classes that extend this trait need to provide implementations for the abstract
moveBody
method; each such concrete class can represent a new kind of robot behavior.
Overriding the mayAdvance
method may also be necessary.
- Value parameters:
- body
the body the robot brain will control
- initialName
the name of the robot
Value members
Abstract methods
Moves the robot: causes it to change its location, turn around, or whatever else the robot does during its turn. What this means in practice depends on the type (subtype) of the robot brain.
Moves the robot: causes it to change its location, turn around, or whatever else the robot does during its turn. What this means in practice depends on the type (subtype) of the robot brain.
moveBody
is called by the brain’s controlTurn method every time the robot brain
gets a turn, unless the robot is stuck (as defined by isStuck).
This method assumes that it is never called if the robot is broken or stuck.
Concrete methods
Moves the robot one square forwards, if there is nothing there. If that square isn’t empty, the robot does not move, so this method never causes a collision.
Moves the robot one square forwards, if there is nothing there. If that square isn’t empty, the robot does not move, so this method never causes a collision.
- Returns:
true
if the move was successful and the robot is now in the next square,false
if it was blocked
Determines whether or not the robot brain considers the robot to be stuck. A brain considers the robot stuck if and only if all the squares surrounding the robot contain unpassable obstacles, as defined by the mayAdvance method. Only the four nearest squares in the main compass directions are considered.
Determines whether or not the robot brain considers the robot to be stuck. A brain considers the robot stuck if and only if all the squares surrounding the robot contain unpassable obstacles, as defined by the mayAdvance method. Only the four nearest squares in the main compass directions are considered.
Returns the location of this robot in its robot world.
Returns the location of this robot in its robot world.
Returns the coordinates that point at the square that is immediately in front of this robot.
Returns the coordinates that point at the square that is immediately in front of this robot.
Checks the the square that neighbors this robot in the given direction to see if it contains something that the robot brain considers an obstacle. This method is abstract; different kinds of robot brains will have different definitions of what counts as an obstacle.
Checks the the square that neighbors this robot in the given direction to see if it contains something that the robot brain considers an obstacle. This method is abstract; different kinds of robot brains will have different definitions of what counts as an obstacle.
This default implementation (which may be overriden by subtypes) does not consider anything to be an obstacle. Robots that rely on this default implementation are willing to move in any direction and never consider themselves to be stuck (see isStuck).
Returns the robot’s name. If the name has been set to the empty string
or contains only whitespace, returns "Incognito"
instead.
Returns the robot’s name. If the name has been set to the empty string
or contains only whitespace, returns "Incognito"
instead.
Changes the robot’s name to the given one.
Changes the robot’s name to the given one.
Note to students: In Scala, a method whose name ends in an underscore and an
equals sign — like this one’s — can be called using a special syntax. For instance,
this method can be called either with the statement bot.name_=("Suzy")
or simply
with an assignment statement: bot.name = "Suzy"
. You won’t find many uses for this
in O1, but it’s nice to know nonetheless.
Returns the brain of the robot immediately in front of this robot. The
brain is returned in an Option
wrapper; None
is returned if there
is no robot in that square or if the robot that is there has no brain.
Returns the brain of the robot immediately in front of this robot. The
brain is returned in an Option
wrapper; None
is returned if there
is no robot in that square or if the robot that is there has no brain.
Returns the square that is immediately in front of this robot.
Returns the square that is immediately in front of this robot.
Returns a textual representation of the robot (which is the robot’s name).
Returns a textual representation of the robot (which is the robot’s name).
- Definition Classes