// Small Killough Platform #define POWER 9 #define DEG90_9 75 #define TRANS 100 #define LEFT OUT_FWD #define RIGHT OUT_REV #define FORWARD OUT_FWD #define BACKWARD OUT_REV #define TRANS90 50 void Translate( int time , int power, int direction ){ SetPower( OUT_A + OUT_B + OUT_C, power ); SetDirection( OUT_A, OUT_REV ); SetDirection( OUT_C, OUT_FWD ); if( direction == BACKWARD ) Toggle( OUT_A + OUT_C ); OnFor( OUT_A + OUT_C , time ); Off( OUT_B ); } void Rotate( int time, int power, int direction ){ SetPower( OUT_A + OUT_B + OUT_C, power ); if ( direction == LEFT ) SetDirection( OUT_A + OUT_B + OUT_C, OUT_FWD ); else SetDirection( OUT_A + OUT_B + OUT_C, OUT_REV ); OnFor( OUT_A + OUT_B + OUT_C , time ); } void PulseDriveRight( int on, int off, int times ){ SetPower( OUT_A + OUT_B + OUT_C, 9 ); SetDirection( OUT_B , OUT_FWD ); SetDirection( OUT_A + OUT_C, OUT_REV ); int i = 0; while ( i < times ){ i++; On( OUT_B ); OnFor( OUT_A + OUT_C, on ); Off( OUT_A + OUT_C ); Wait(off); } Off( OUT_A + OUT_B + OUT_C ); } void PulseDriveLeft( int on, int off, int times ){ SetPower( OUT_A + OUT_B + OUT_C, 9 ); SetDirection( OUT_B , OUT_REV ); SetDirection( OUT_A + OUT_C, OUT_FWD ); int i = 0; while ( i < times ){ i++; On( OUT_B ); OnFor( OUT_A + OUT_C, on ); Off( OUT_A + OUT_C ); Wait(off); } Off( OUT_A + OUT_B + OUT_C ); } task main(){ int i = 0; while( i < 4 ){ Translate( TRANS, POWER, FORWARD ); Rotate( DEG90_9, POWER, RIGHT); i++; } Translate( TRANS, POWER, FORWARD ); PulseDriveRight( 4, 2, 17 ); Translate( TRANS, POWER, BACKWARD ); PulseDriveLeft( 4, 2, 17 ); }