was designed and implemented at WPI.
Instantiated with new
State: position on grid, # beepers, ...
Send Message: tell
Methods: move, turnleft, putbeeper, pickbeeper, turnoff s
Initially, the RoBOTL world is empty.
We can create
one of its inhabitants (called a basic_bot) using:
and the following program:
execute { new basic_bot Eve; }
Note that Eve has been placed in square (0,0)
and is facing East. Let's make one more basic_bot named
Adam, near Eve.
execute { new basic_bot Adam at 0,5; new basic_bot Eve; }
When basic_bot's like Eve or Adam
are created, they know
how to do a few things (these are their methods:)
To get it to perform any of these actions, you must send a message
using
Tell
Let's tell Eve to TurnLeft and Move 1 square
towards Adam :
execute { new basic_bot Adam at 0,5; new basic_bot Eve; tell Eve: { TurnLeft; Move 1; } }
And we will have Adam TurnLeft and Move 1 square
away from Eve :
execute { new basic_bot Adam at 0,5; new basic_bot Eve; tell Eve: { TurnLeft; Move 1; } tell Adam: { TurnLeft; Move 1; } }
How do we
control the robots and their world?
execute { new basic_bot Eve; new basic_bot Adam at 0,5; tell Eve: { iterate 3 times TurnLeft; Move 1; } tell Adam: { TurnLeft; Move 1; } }
Notice that Eve only TurnLeft's 3 times. If we want her
to both TurnLeft and Move 1 all 3 times, we'd have
to put braces,
{ }, around those 2 instructions:
execute { new basic_bot Adam; new basic_bot Eve at 5,5; tell Eve: { iterate 3 times { TurnLeft; Move 1; } } tell Adam: { TurnLeft; Move 1; } }
If we are concerned that a Robot may run into the edge of the
world, we can test:
execute { new basic_bot Eve; tell Eve: { iterate 3 times { TurnLeft; if (FrontIsClear) Move 1; } } }More RoBOTL
Web References
Karel, the Robot,
RoBOTL's predecessor
Jim Meddick's
Robotman
Send questions and comments to: Karen Lemone