2005/A3

ロボットに「右」を書かせてみよう    作成者 tatsu                      

ポイント:何とかして手書きの「右」に近づけようと思い、なめらかさを出した。

    

命令

  
 int move_time;

task main() {

  move_time=80;            //最初の一角を書く
    OnFwd(OUT_A);     
    OnRev(OUT_C);
    Wait(move_time);
  
  move_time=20;           //ペンを上げる
    OnFwd(OUT_B);
    Wait(move_time);
    Off(OUT_B);
  
  move_time=89;           //第二画を書くために機体を戻す
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(move_time);
  
  move_time=15;           //一歩を下げる
    OnRev(OUT_A+OUT_C);
    Wait(move_time);
  
  move_time=20;           //ペンを下ろす
   OnRev(OUT_B);
   Wait(move_time);
   Off(OUT_A+OUT_C+OUT_B);
   Wait(50);
  
 move_time=85;            //第二画を書く
    OnFwd(OUT_A+OUT_C);
    Wait(move_time);
 
 move_time=20;           //ペンを上げる
   OnFwd(OUT_B);
   Wait(move_time);
   Off(OUT_B);   
  
 move_time=75;            //右に曲がる
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(move_time);
    Off(OUT_A+OUT_C+OUT_B);
    
 move_time=50;
  OnRev(OUT_A+OUT_C);         //5秒前進
  Wait(move_time);
  Off(OUT_A+OUT_C);
 
 move_time=20;              //ペンを下ろす
   OnRev(OUT_B);
   Wait(move_time);
   Off(OUT_B);
 
 move_time=60;           //6秒直進
  OnFwd(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
 
 move_time=40;           //ペンを上げる
   OnFwd(OUT_B);
   Wait(move_time);
   Off(OUT_B);
 
 move_time=30;           //3秒直進
  OnFwd(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
  
 move_time=70;         //左に曲がる
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(move_time);
    Off(OUT_A+OUT_C+OUT_B);
    
 move_time=73;          //モータAとモータCを逆回転させる
  OnRev(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
  
 move_time=30;          //ペンを下ろす
   OnRev(OUT_B);
   Wait(move_time);
   Off(OUT_B);
   
 move_time=80;            //8秒直進
  OnFwd(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
  
 move_time=40;          //右に曲がる
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(move_time);
    Off(OUT_A+OUT_C+OUT_B);  
    
 move_time=40;          //ペンを上げる
   OnFwd(OUT_B);
   Wait(move_time);
   Off(OUT_B);
   
 move_time=40;
    OnFwd(OUT_A);         //さらに4秒右に曲がる
    OnRev(OUT_C);
    Wait(move_time);
    Off(OUT_A+OUT_C+OUT_B);
      
 move_time=40;           //4秒直進
  OnFwd(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);   
 move_time=76;             //右に曲がる
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(move_time);
    Off(OUT_A+OUT_C+OUT_B);
    
 move_time=95;          // モータAとモータCを逆回転   
  OnRev(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
  
 move_time=40;           //ペンを下ろす
   OnRev(OUT_B);
   Wait(move_time);
   Off(OUT_B);

move_time=50;           //5秒機体を後退させる
  OnRev(OUT_A+OUT_C);
  Wait(move_time);
  Off(OUT_A+OUT_C);
  
move_time=40;           //ペンを上げる
   OnFwd(OUT_B);
   Wait(move_time);
   Off(OUT_B);
      

}

終わってみて

    [反省]
          ・時間が合わなかった。
          ・長いプログラムになってしまった。          
    [感想] 
        簡単な漢字を書くことにこんなに手こずるとは思わなかった。 説明書どうりではなく、自分で作るということの大切さが思いだされた。

コメントお願いします

  • 関数やサブルーチンを使うと、もう少し短くてすっきりしたプログラムになると思います。また、何画目の動作のための命令なのか、などがわかるようにコメント文を入れておきましょう。 -- 松本(教員)? 2005-11-21 (月) 14:31:01


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-25 (金) 16:02:27