This week, you will continue the general puzzle framework we
have been developing. In summary, you will develop a world
reader, a monster, and extend your agent to pick up and use
tools. Get started right away.
1. World Reader.
add a method, initWorldFromFile(String filename), to the Grid class
that will read an initialization file such as this
. The file contains the information for the size of the
world, the initial position and orientation of the agent, and the
contents of each grid cell. The format is as follows: line
1 -- the name of the world. this should be displayed on the titlebar of
your window. line 2 -- the size of the grid in X/columns followed
by Y/rows. line 3 -- initial heading of agent, one of north,
south, east, or west. lines 4 through end of file -- the contents
of each cell where a line represents the contents of a single
row. You should create GridObjects in a cell according to the
In your main function when you create your Grid instance, you should
call <yourgrid>.initWorldFromFile("theFileName"); which will in
turn create the appropriately sized grid and the necessary GridObjects
in their appropriate locations. Note, you will not know in
advance the dimensions of your grid or the appropriate size of the
2. A Monster.
need to create a monster controller that will (indirectly) manipulate a
second agent object. The monster can sense the direction toward
the first agent you created. Given that direction, the monster
will move toward the agent some percentage of the time (say 50%).
The rest of the time it moves randomly. If the monster moves into
the cell where the first agent is located, the monster eats the agent
and the game is over. A monster's initial heading should be
randomly selected at time of creation.
3. Agent Extensions.
Extend your agent to select among a more complete set of possible
actions. (They are: moveForward(), moveBackward(), turnRight(),
turnLeft(), grab(), drop(), and use().) The new methods --
grab(), drop() and use() -- should do the appropriate things when
executed in appropriate situations. For example, if grab() is
selected while the agent is in the same cell as a key, the key should
become part of the agent's inventory and should move with the agent
when the agent moves. Similarly, if the agent has a hammer in its
inventory and selects the use() method while facing a rock, the rock
should disappear (and subsquently, the agent could walk over the cell
where the rock had been).
On your machine where you are doing your homework, create a folder
called <your email name> followed by "P2". For example,
with email address "cjones" would create
a folder called
Inside that folder, place plain text file(s) containing your answers to
any exercises. Also, place whatever Java files are necessary
your Programming Projects in the same folder. Finally, either tar
zip the folder so that when I
it, the folder
"<emailname>P2" will be created
you choose to use zip instead of tar, change the extension of the
resulting zip file
from "<something>.zip" to "<something>.foo". This
webmail will allow you to attach the file. If I get an attachment
extension .foo, I will change it back to .zip and all should be well.