#define SPEED_RANGE 10 int a_speed, b_speed, c_speed; void varMotor(int s, const int m) { int l=s; if (l>0) { OnFwd(m); } else if (l<0) { l=-l; OnRev(m); } else { Off(m); } Wait(l); // On Time if (l > 0) { Off(m); Wait (SPEED_RANGE-l); } } task runMotorA() { while (true) { varMotor(a_speed, OUT_A); } } task runMotorB() { while (true) { varMotor(b_speed, OUT_B); } } task runMotorC() { while (true) { varMotor(c_speed, OUT_C); } } void forward(int speed) { PlaySound(SOUND_CLICK); a_speed = 0; b_speed = -speed; c_speed = speed; } task main() { a_speed = 0; b_speed = 0; c_speed = 0; start runMotorA; start runMotorB; start runMotorC; // a_speed = 9; b_speed = -5; c_speed = -5; Wait(300); // a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); // Square - no turn b_speed = -10; c_speed = 10; Wait(250); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); a_speed = 9; b_speed = -5; c_speed = -5; Wait(250); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); b_speed = 10; c_speed = -10; Wait(200); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); a_speed = -9; b_speed = 4; c_speed = 4; Wait(250); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); // Circle while turning a_speed = 7; b_speed = -10; c_speed = 10; Wait(900); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); // Turn about 1 wheel a_speed = 0; b_speed = 10; c_speed = 10; Wait(400); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); // Forward a little a_speed = 0; b_speed = -10; c_speed = 10; Wait(200); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); // Spin a_speed = -10; b_speed = -10; c_speed = -10; Wait(300); a_speed = 0; b_speed = 0; c_speed = 0; Wait(10); stop runMotorA; stop runMotorB; stop runMotorC; Off(OUT_A+OUT_B+OUT_C); }