[[2005/B2]] *キャタピラのモーターとライントレース用光センサーのプログラム [#p1275a28] int box_color; int magaru = 400; sub cub() { OnFwd(OUT_A+OUT_C); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { if (SENSOR_1 < 45) { OnFwd(OUT_C);OnRev(OUT_A); } if (SENSOR_3 < 45) { OnFwd(OUT_A);OnRev(OUT_C); } if ((SENSOR_1 > 45) && (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } } Off(OUT_A+OUT_C); } sub hirou_hazime() { Off(OUT_A+OUT_C); SendMessage(31);Wait(200); Off(OUT_A+OUT_C); until(Message() == 32); OnRev(OUT_A+OUT_C);Wait(100); Off(OUT_A+OUT_C); SendMessage(33);Wait(300); Off(OUT_A+OUT_C); until(Message() == 34); OnFwd(OUT_A+OUT_C);Wait(70); } sub kago() { OnFwd(OUT_A+OUT_C);Wait(100); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); OnRev(OUT_A+OUT_C);Wait(150); Off(OUT_A+OUT_C); SendMessage(3);Wait(200); until (Message() == 21); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } } task main() { SetPower(OUT_A,8); SetPower(OUT_C,8); SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); ClearMessage(); Off(OUT_A+OUT_C);Wait(100); //hirou hirou_hazime(); //susumu OnFwd(OUT_A+OUT_C); until (SENSOR_1< 45 && SENSOR_3 < 45); OnFwd(OUT_A+OUT_C);Wait(40); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); cub(); OnRev(OUT_A+OUT_C);Wait(100); OnFwd(OUT_C);OnRev(OUT_A);Wait(200); OnFwd(OUT_A+OUT_C);Wait(2300); OnFwd(OUT_C);OnRev(OUT_A);Wait(200); OnFwd(OUT_A+OUT_C);Wait(110); OnFwd(OUT_A);OnRev(OUT_C);Wait(100); OnFwd(OUT_A+OUT_C);Wait(150); cub(); Off(OUT_A+OUT_C); SendMessage(10);Wait(200); ClearMessage();Wait(200); while(Message() !=0 ) { //box orosu if ( Message() ==1 ) { PlaySound(SOUND_DOWN);Wait(100); kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } if ( Message() == 2 ) { PlaySound(SOUND_DOWN);Wait(100); kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } if ( Message() == 3 ) { PlaySound(SOUND_DOWN);Wait(100); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } if ( Message() == 4 ) { PlaySound(SOUND_DOWN);Wait(100); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } if ( Message() == 5 ) { PlaySound(SOUND_DOWN);Wait(100); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } if ( Message() == 6 ) { PlaySound(SOUND_DOWN);Wait(100); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnFwd(OUT_A+OUT_C); } kago(); OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C);Wait(20); } while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } kago(); OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru); while((SENSOR_1 > 45) || (SENSOR_3 > 45)) { OnRev(OUT_A+OUT_C); } Off(OUT_A+OUT_C); } } ClearMessage(); //modoru OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru * 2); cub(); }