[[2005/C1/宇佐美]]
**課題:「左」を書く書道ロボット [#j7ad21aa]
 task main()
 {   
    OnRev(OUT_B);
    Wait(50);          
                        //ペンを下げる
    OnFwd(OUT_C);         
    OnFwd(OUT_A);
    Wait(75);
    Off(OUT_C+OUT_A);  
                        //1画目
    OnFwd(OUT_B);
    Wait(50);
    Off(OUT_B);       
                        //ペンを上げる
    OnRev(OUT_C);
    OnRev(OUT_A);
    Wait(120);         
    Off(OUT_C+OUT_A);
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(115);
    Off(OUT_C+OUT_A);   
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(30);
    Off(OUT_C+OUT_A);   
                        //2画目へ移動 
    OnRev(OUT_B);
    Wait(50);           
                        //ペンを下げる
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(90);
    Off(OUT_A+OUT_C);   
                        //2画目
    OnFwd(OUT_B);
    Wait(50);           
    Off(OUT_B);         
                        //ペンを上げる
    OnRev(OUT_C);
    OnRev(OUT_A);
    Wait(95);
    Off(OUT_C+OUT_A);
    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(108);
    Off(OUT_C+OUT_A);   
    OnFwd(OUT_C);
    OnFwd(OUT_A);
    Wait(75);
    Off(OUT_C+OUT_A);   
                        //3画目へ移動
    OnRev(OUT_B);
    Wait(50);          
                        //ペンを下げる
    OnFwd(OUT_C);
    OnFwd(OUT_A);
    Wait(40);
    Off(OUT_C+OUT_A);   
                        //3画目
    OnFwd(OUT_B);
    Wait(50);
    Off(OUT_B);         
                        //ペンを上げる
    OnRev(OUT_C);
    OnRev(OUT_A);
    Wait(85);
    Off(OUT_C+OUT_A);
    OnRev(OUT_C);
    OnFwd(OUT_A);
    Wait(107);
    Off(OUT_C+OUT_A);
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(61);
    Off(OUT_C+OUT_A);   
                        //4画目へ移動
    OnRev(OUT_B);
    Wait(50);           
                        //ペンを下げる 
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(35);
    Off(OUT_C+OUT_A);   
                        //4画目
    OnFwd(OUT_B);
    Wait(50);
    Off(OUT_B);         
                        //ペンを上げる   
    OnRev(OUT_C);
    OnRev(OUT_A);
    Wait(65);
    Off(OUT_C+OUT_A); 
    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(102);
    Off(OUT_C+OUT_A);
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(40);
    Off(OUT_C+OUT_A);   
                        //5画目へ移動
    OnRev(OUT_B);
    Wait(50);           
                        //ペンを下げる
    OnFwd(OUT_A);
    OnFwd(OUT_C);
    Wait(60);
    Off(OUT_C+OUT_A);   
                        //5画目
    OnFwd(OUT_B);
    Wait(50);
    Off(OUT_B);         
                        //ペンを上げる
 }
 感想:1度はFloatを使おうとしたけど妥協。
     サブルーチンや変数、定数を使わなかったので、かなり長いプログラムに
     なってしまった。     
     紙に書いてみても、バランスの悪いものとなってしまった。

**課題:「左」を書く書道ロボット(改) [#wb02f990]
 #define b 50
 sub pen_down()
 {  
     OnRev(OUT_B);
     Wait(b);
 }
                        //ペンを下げるサブルーチン 
 sub pen_up()
 {
     OnFwd(OUT_B);
     Wait(b);
     Off(OUT_B);
 } 
                        //ペンを上げるサブルーチン 
 void go_straight(int t)
 {
     Onfwd(OUT_A+OUT_C); Wait(t);                                                 
     Off(OUT_A+OUT_C);
 }
                       //直進して止まる関数
 void turn_right(int t)
 {
     OnFwd(OUT_A); OnRev(OUT_C); Wait(t); 
     Off(OUT_A+OUT_C);   
 }
                       //右へ曲がって止まる関数
 void turn_left(int t)
 {  
    OnFwd(OUT_C); OnRev(OUT_A); Wait(t); 
    Off(OUT_A+OUT_C);
 }
                       //左へ曲がって止まる関数
 task main()
 {   
     pen_down();         
                       //ペンを下げる
     go_straight();   
                       //1画目
     pen_up();      
                       //ペンを上げる
     go_back(120);
     turn_right(115);  [回転] 
     go_straight(30);     
                       //2画目へ移動完了 
     pen_down();          
                       //ペンを下げる
     go_straight(90);
                       //2画目
     pen_up();         
                       //ペンを上げる
     go_back(95);
     turn_left(108);    [回転]
     go_straight(75);   
                        //3画目へ移動完了
     pen_down();          
                        //ペンを下げる
     go_straight(40); 
     Off();   
                        //3画目
     pen_up();         
                        //ペンを上げる
     go_back(85);
     Off();
     turn_right(107)
     Off();             [回転]
     go_straight(61);
     Off();   
                        //4画目へ移動完了
     pen_down();           
                        //ペンを下げる 
     go_straight(35);
     Off();   
                        //4画目
     pen_up();        
                        //ペンを上げる   
     go_back(65);
     Off(); 
     turn_left(102)
     off()
     go_straight(40);
     Off();   
                        //5画目へ移動完了
     pen_down();           
                        //ペンを下げる
     go_straight(60);
     Off();   
                        //5画目
     pen_up();         
                        //ペンを上げる
 }
 感想:定義と関数を使って改良してみた。
      プログラムを見るだけで、動きがなんとなくわかるプログラムに
      なったと思う。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS