[[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]]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS