Spring Semester 2003

Homework Assignment Two: A Simple Robot

You have to define a class `Robot` that describes a robot very similar to the one you worked with in the first lab. To clarify how easy this problem is we need to say that metaphorically your robot is:

• a `Penguin`
• a `Tigger`
• a `BankAccount`
• a `Rectangle`
• a `ConsoleReader`
• a `String`
all at the same time. The `Robot` needs to be able to:
• `turnLeft` (90 degrees)
• `moveForward` (one step)
The `Robot` also needs to remember its location.

Two methods:

• `getX()`, and
• `getY()`
can be used to report the current values of the robot's location.

The location of the robot is a pair ( x , y ) of integers, that describes the position of the robot.

When you create a `Robot` one need specify:

• the location (x, y)
• a name for the robot
• the direction the robot is facing
The robot also needs to be able to:
• report the `direction()` it's facing (N, S, W, E)
• produce a complete `report()` (x, y, name, direction)
Here's a sample program with two robots:
```class Walk {
public static void main(String[] args) {

Robot a = new Robot("Alice", 2, 3, "North");
a.report();

Robot q = new Robot("Queen", -4, -1, "West");
q.report();

a.turnLeft();
a.report();

a.moveForward();
a.report();

a.turnLeft();
a.report();

a.moveForward();
a.report();

a.moveForward();
a.report();

a.moveForward();
a.report();

q.moveForward();
q.report();

q.turnLeft();
q.report();
}
}```
This would produce the following output:
```frilled.cs.indiana.edu%java Walk
Robot Alice located at (2, 3) facing North
Robot Queen located at (-4, -1) facing West
Robot Alice now turns left.
Robot Alice located at (2, 3) facing West
Robot Alice now moves forward.
Robot Alice located at (1, 3) facing West
Robot Alice now turns left.
Robot Alice located at (1, 3) facing South
Robot Alice now moves forward.
Robot Alice located at (1, 4) facing South
Robot Alice now moves forward.
Robot Alice located at (1, 5) facing South
Robot Alice now moves forward.
Robot Alice located at (1, 6) facing South
Robot Queen now moves forward.
Robot Queen located at (-5, -1) facing West
Robot Queen now turns left.
Robot Queen located at (-5, -1) facing South
frilled.cs.indiana.edu%```
Your task is to write `Robot.java` that describes the robots.

Please take a moment to think about the referential we use in this problem which is the same one that we use in computer graphics (see lecture notes three on Jan 21) which is also the reason for which Tigger is (let's say) upside down on the main page of this web site. As always, please let us know if you have any questions, of course.

• 25 points for your `Robot` being able to store the location, name, and direction facing
• 15 points for reporting the location `(x, y)`, the direction, and the name individually
• 5 more points for putting all of that together in a method `report()`, and
• 40 points for your `Robot`'s ability to `turnLeft()` and `moveForward()` as shown