[[2004/C4/ロボコン]] #define shiro_midori 39 int swing_time,limit; sub koudou() { OnRev(OUT_B); until(SENSOR_3==1); Off(OUT_B); OnRev(OUT_A); Wait(1100-swing_time*10); Off(OUT_A); OnFwd(OUT_B); Wait(50); Off(OUT_B); OnRev(OUT_C); Wait(650); Off(OUT_C); OnRev(OUT_B); until(SENSOR_3==1); Off(OUT_B); OnFwd(OUT_A); Wait(1100); Off(OUT_A); } sub haizyo() { OnRev(OUT_B); until(SENSOR_3==1); Off(OUT_B); OnFwd(OUT_A); Wait(400+swing_time*10); Off(OUT_A); OnRev(OUT_C); Wait(650); Off(OUT_C); OnRev(OUT_A); Wait(400); Off(OUT_A); } task main(){ SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_TOUCH); Wait(300); while(true){ OnFwd(OUT_B); Wait(180); Off(OUT_B); ClearTimer(0); ClearTimer(1); OnRev(OUT_A); until(SENSOR_1==1); swing_time=Timer(0); limit=Timer(1); Off(OUT_A); if(Timer(0)>=83){ OnRev(OUT_B); until(SENSOR_3==1); Off(OUT_B); OnFwd(OUT_A); Wait(limit*10); Off(OUT_A); } else{ OnFwd(OUT_B); Wait(130); Off(OUT_B); OnFwd(OUT_C); Wait(650); Off(OUT_C); if(SENSOR_2>=shiro_midori){ koudou(); } else{ haizyo(); } } } }