[[2005/B7/課題1]] 目次 #contents *「正」を書くプログラム [#u19f907f] #comment *「左」を書くプログラム [#racc09c4] // 「左」を書くプログラム // // 作成者:かずま // 作成日:2005-11-7 #define TURN_TIME 101 // 直角に曲がるのにかかる時間 #define MOVE_TIME 121 // 1秒間に進む距離 #define PEN_TIME 20 // ペンを上下させる時間 sub turn_left() // 左方向に90度回転 { OnRev(OUT_A); OnFwd(OUT_C); Wait(TURN_TIME); Off(OUT_A+OUT_C); } sub turn_right() // 右方向に90度回転 { OnFwd(OUT_A); OnRev(OUT_C); Wait(TURN_TIME); Off(OUT_A+OUT_C); } sub pen_down() // ペンを下ろす { OnFwd(OUT_B); Wait(PEN_TIME); Off(OUT_B); } sub pen_up() // ペンを上げる { OnRev(OUT_B); Wait(PEN_TIME); Off(OUT_B); } task main() { SetPower(OUT_A,7); // パワーを設定 SetPower(OUT_C,7); pen_down(); // ペンを下ろす OnFwd(OUT_A+OUT_C); // 【一画目】行動1(17.1cm直進) Wait(17100/MOVE_TIME); Off(OUT_A+OUT_C); pen_up(); // ペンを上げる Wait(100); turn_left(); // 行動2(左回転) Wait(100); OnFwd(OUT_A+OUT_C); // 行動3(5.2cm直進) Wait(5200/MOVE_TIME); Off(OUT_A+OUT_C); Wait(100); turn_left(); // 行動4(左回転) Wait(100); OnFwd(OUT_A+OUT_C); // 行動5(8.8cm直進) Wait(8800/MOVE_TIME); Off(OUT_A+OUT_C); Wait(100); OnRev(OUT_A); // 行動6(左にある程度回転) OnFwd(OUT_C); Wait(87); Off(OUT_A+OUT_C); pen_down(); // ペンを下ろす Wait(100); SetPower(OUT_A,7); // パワーを変更 SetPower(OUT_C,0); OnFwd(OUT_A+OUT_C); // 【二画目】行動7(左方向に曲がりながら前進) Wait(180); Off(OUT_A+OUT_C); SetPower(OUT_A,7); // パワーを変更 SetPower(OUT_C,7); pen_up(); // ペンを上げる Wait(100); OnFwd(OUT_A); // 行動8(右にある程度回転) OnRev(OUT_C); Wait(165); Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_A+OUT_C); // 行動9(5.8cm直進) Wait(5800/MOVE_TIME); Off(OUT_A+OUT_C); Wait(100); turn_right(); // 行動10(右回転) Wait(100); OnFwd(OUT_A+OUT_C); // 行動11(2.3cm直進) Wait(2300/MOVE_TIME); Off(OUT_A+OUT_C); pen_down(); // ペンを下ろす Wait(100); OnFwd(OUT_A+OUT_C); // 【三画目】行動12(12.2cm直進) Wait(12200/MOVE_TIME); Off(OUT_A+OUT_C); pen_up(); // ペンを上げる Wait(100); OnRev(OUT_A+OUT_C); // 行動13(5.5cm後退) Wait(5500/MOVE_TIME); Off(OUT_A+OUT_C); Wait(100); turn_right(); // 行動14(右回転) Wait(200); OnRev(OUT_A+OUT_C); // 誤差修正1(1.4cm後退) Wait(1400/MOVE_TIME); Off(OUT_A+OUT_C); pen_down(); // ペンを下ろす Wait(200); OnFwd(OUT_A+OUT_C); // 【四画目】行動15(7.7cm直進) Wait(7700/MOVE_TIME); Off(OUT_A+OUT_C); pen_up(); // ペンを上げる Wait(100); OnFwd(OUT_A+OUT_C); // 誤差修正2(1.1cm直進) Wait(1100/MOVE_TIME); Off(OUT_A+OUT_C); Wait(100); turn_left(); // 行動16(左回転) Wait(100); OnRev(OUT_A+OUT_C); // 行動17(10.3cm後退) Wait(10300/MOVE_TIME); Off(OUT_A+OUT_C); pen_down(); // ペンを下ろす Wait(100); OnFwd(OUT_A+OUT_C); // 行動18(16.7cm直進) Wait(16700/MOVE_TIME); Off(OUT_A+OUT_C); pen_up(); // ペンを上げる } -よくまとまっているプログラムですね。関数を使えばもう少し短く簡潔にできるかもしれません。 -- [[まいける(TA)]] &new{2005-12-02 (金) 17:10:24}; #comment [[戻る>2005/B7/課題1]]