Page 186
while(true) {
if (BUMP_SENSOR == 1) {
// Say tag!
SendMessage(MESSAGE_TAG);
// Coast to a stop.
tagCommand = COMMAND_FLOAT;
Wait(20);
// Check to see if we got an acknowledgement.
if (Message() == MESSAGE_ACKNOWLEDGE) {
PlaySound(3);
SetPower(OUT_B, score);
On(OUT_B);
if (score < 7) score = score + 1;
}
else PlaySound(2);
ClearMessage();
// Back up.
tagCommand = COMMAND_REVERSE;
Wait(50);
// Turn left or right for a random duration.
if (Random(1) == 0) tagCommand = COMMAND_LEFT;
else tagCommand = COMMAND_RIGHT;
Wait(Random(200));
tagCommand = COMMAND_NONE;
}
else tagCommand = COMMAND_NONE;
}
}
int avoidCommand;
task avoid() {
while(true) {
if (LIGHT_SENSOR < averageLight - 3) {
// Back away from the border.
avoidCommand = COMMAND_FLOAT;
Wait(20);
avoidCommand = COMMAND_REVERSE;
Wait(50);
// Turn left or right for a random duration.
if (Random(1) == 0) avoidCommand = COMMAND_LEFT;
else avoidCommand = COMMAND_RIGHT;
Wait(Random(200));
avoidCommand = COMMAND_NONE;
}
}
}
int taggedCommand;
task tagged() {
while(true) {
if (Message() == MESSAGE_TAG) {
taggedCommand = COMMAND_STOP;