Psychobot
The class Psychobot
represents the “brains” of robots which stand still
until they see another unbroken robot. When this happens, they ram the victim with
incredible speed.
- Value parameters:
- body
the robot body whose actions the psychobot brain will control
- name
the name of the psychobot
Value members
Concrete methods
Moves the robot. During its turn, a psychobot uses its sensors to scan the four main compass directions, always starting with north and continuing clockwise. (It does not change facing while doing this.) When the psychobot notices an intact robot, it turns to face it, instantly moves an unlimited number of squares towards the robot, and rams into it, causing the victim to break. After the collision, the psychobot remains in the square adjacent to its victim, and stops scanning for the rest of the turn. During its next turn, it will start over by scanning north.
Moves the robot. During its turn, a psychobot uses its sensors to scan the four main compass directions, always starting with north and continuing clockwise. (It does not change facing while doing this.) When the psychobot notices an intact robot, it turns to face it, instantly moves an unlimited number of squares towards the robot, and rams into it, causing the victim to break. After the collision, the psychobot remains in the square adjacent to its victim, and stops scanning for the rest of the turn. During its next turn, it will start over by scanning north.
If there are no victims in any of the four main directions, the robot waits still. It does not attack broken robots. A psychobot can not scan through walls and it can never collide with a wall. It also does not see through robots, not even broken ones.
Inherited 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- Inherited from:
- RobotBrain
Controls the robot body’s actions for a single turn. If the brain considers the robot to be stuck (see isStuck), this method does nothing. If not stuck, the brain calls its own moveBody method, which carries out the actual robot actions.
Controls the robot body’s actions for a single turn. If the brain considers the robot to be stuck (see isStuck), this method does nothing. If not stuck, the brain calls its own moveBody method, which carries out the actual robot actions.
- Inherited from:
- RobotBrain
Returns the direction this robot is facing in.
Returns the direction this robot is facing in.
- Inherited from:
- RobotBrain
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.
- Inherited from:
- RobotBrain
Returns the location of this robot in its robot world.
Returns the location of this robot in its robot world.
- Inherited from:
- RobotBrain
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.
- Inherited from:
- RobotBrain
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).
- Inherited from:
- RobotBrain
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.
- Inherited from:
- RobotBrain
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.
- Inherited from:
- RobotBrain
Returns the square that is immediately in front of this robot.
Returns the square that is immediately in front of this robot.
- Inherited from:
- RobotBrain
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
- RobotBrain -> Any
- Inherited from:
- RobotBrain
Returns the world that this robot is located in.
Returns the world that this robot is located in.
- Inherited from:
- RobotBrain