task main () { start bump_monitor; RipL(100); Wait(100); Bk1(200); Bk2(200); Bk3(200); Wait(100); RipR(100); Wait(100); } task bump_monitor () { SetSensor (SENSOR_1, SENSOR_TOUCH); SetSensor (SENSOR_2, SENSOR_TOUCH); SetSensor (SENSOR_3, SENSOR_TOUCH); while (true) { if(SENSOR_1) { Off (OUT_A+OUT_B+OUT_C); Bk2(100); RipL(50); } if(SENSOR_2) { Off (OUT_A+OUT_B+OUT_C); Bk3(100); RipL(50); } if(SENSOR_3) { Off (OUT_A+OUT_B+OUT_C); Bk1(100); RipL(50); } } } //Rotate in place Left void RipL (int time) { OnRev (OUT_A+OUT_B+OUT_C); Wait(time); Off (OUT_A+OUT_B+OUT_C); } //Rotate in place Right void RipR (int time) { OnFwd (OUT_A+OUT_B+OUT_C); Wait(time); Off (OUT_A+OUT_B+OUT_C); } //Forward1 void Fd1 (int time) { OnRev (OUT_A); OnFwd (OUT_B); Wait(time); Off (OUT_A+OUT_B); } //Forward2 void Fd2 (int time) { OnRev (OUT_B); OnFwd (OUT_C); Wait(time); Off (OUT_B+OUT_C); } //Forward3 void Fd3 (int time) { OnRev (OUT_C); OnFwd (OUT_A); Wait(time); Off (OUT_C+OUT_A); } //Back1 void Bk1 (int time) { OnFwd (OUT_A); OnRev (OUT_B); Wait(time); Off (OUT_A+OUT_B); } //Back2 void Bk2 (int time) { OnFwd (OUT_B); OnRev (OUT_C); Wait(time); Off (OUT_B+OUT_C); } //Back1 void Bk3 (int time) { OnFwd (OUT_C); OnRev (OUT_A); Wait(time); Off (OUT_C+OUT_A); }