*&size(40){〜第1回課題〜}; [#i67836c9]
**&size(30){四角形をかく}; [#c9c2bd0a]
***プログラム [#g330185a]
  task main()
  {
      OnFwd(OUT_A);  //前進
      OnRev(OUT_C);
      Wait(300);
      
      OnFwd(OUT_A);  //90度回転
      OnFwd(OUT_C);
      Wait(150);
      
      OnFwd(OUT_A);  //前進
      OnRev(OUT_C);
      Wait(300);
      
      OnFwd(OUT_A);  //90度回転
      OnFwd(OUT_C);
      Wait(150);
      
      OnFwd(OUT_A);  //前進
      OnRev(OUT_C);
      Wait(300);
      
      OnFwd(OUT_A);  //90度回転
      OnFwd(OUT_C);
      Wait(150);
      
      OnFwd(OUT_A);  //前進
      OnRev(OUT_C);
      Wait(300);
      
      Off(OUT_A+OUT_C);  //停止
  }
***感想 [#padeafb3]
初めてかいたプログラムなので無駄が多く長い。
**&size(30){四角形をかく(書き直し)}; [#iff7dfee]
***プログラム [#hc2839c9]
  task main()
  {
      repeat(3){          //前進+90度回転を3回繰り返す
          OnFwd(OUT_A);
          OnRev(OUT_C);
          Wait(300);
          
          OnFwd(OUT_A);
          OnFwd(OUT_C);
          Wait(150);
      }
      
      OnFwd(OUT_A);  //前進
      OnRev(OUT_C);
      Wait(300);
      
      Float(OUT_A+OUT_C);  //停止
  }
***感想 [#kfa8382a]
はじめに書いたプログラムと比べるとずいぶんスッキリした。
**&size(30){『右』をかく}; [#u445cca0]
***プログラム [#r2836e7a]
  task main()
  {
      OnRev(OUT_B);  //ペンをおろす
      Wait(50);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の1画目をかく
      OnRev(OUT_C);
      Wait(150);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の2画目の始点へ移動
      OnRev(OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_A);
      Wait(100);
      Off(OUT_A);
      
      OnFwd(OUT_C);
      Wait(400);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_A);
      OnFwd(OUT_C);
      Wait(50);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_B);  //ペンをおろす
      Wait(50);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の2画目をかく
      OnRev(OUT_C);
      Wait(130);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の3画目の始点へ移動
      OnRev(OUT_C);
      Wait(50);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(80);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_A);
      Wait(390);
      Off(OUT_A);
      
      OnRev(OUT_A);
      OnFwd(OUT_C);
      Wait(125);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_B);  //ペンをおろす
      Wait(50);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の3画目をかく
      OnRev(OUT_C);
      Wait(70);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の4画目の始点へ移動
      OnRev(OUT_C);
      Wait(190);
      Off(OUT_A+OUT_C);  
      
      OnFwd(OUT_C);
      Wait(450);
      Off(OUT_C);
      
      OnRev(OUT_A);
      OnFwd(OUT_C);
      Wait(30);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_B);  //ペンをおろす
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の4画目の一部をかく
      OnRev(OUT_C);
      Wait(100);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(80);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //4画目の残りをかくための始点へ移動
      OnRev(OUT_C);
      Wait(220);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_A);
      Wait(400);
      Off(OUT_A);
      
      OnRev(OUT_A);
      OnFwd(OUT_C);
      Wait(65);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_B);  //ペンをおろす
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //4画目の残りをかく
      OnRev(OUT_C);
      Wait(70);
      Off(OUT_A+OUT_C);
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(70);
      Off(OUT_B);
      
      OnFwd(OUT_A);  //右の5画目の始点へ移動
      OnRev(OUT_C);
      Wait(220);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_A);
      Wait(420);
      Off(OUT_A);
      
      OnFwd(OUT_A);
      OnRev(OUT_C);
      Wait(40);
      Off(OUT_A+OUT_C);
      
      OnRev(OUT_B);  //ペンをおろす
      Wait(50);
      Off(OUT_B);
      
      OnRev(OUT_A);  //右の5画目をかく
      OnFwd(OUT_C);
      Wait(100);
      
      Off(OUT_A+OUT_C);  //停止
      
      OnFwd(OUT_B);  //ペンをあげる
      Wait(70);
      Off(OUT_B);
  }   
  }
***プログラム(書き直し) [#y4b6b5e4]
  sub pen_up()
  {OnFwd(OUT_B);
   Wait(70);
   Off(OUT_B);
  }
  
  sub pen_down()
  {OnRev(OUT_B);
   Wait(50);
   Off(OUT_B);
  }
  
  void go(int t)
  {OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(t);
   Off(OUT_A+OUT_C);
  }
  
  void back(int t)
  {OnRev(OUT_A);
   OnFwd(OUT_C);
   Wait(t);
   Off(OUT_A+OUT_C);
  }
  
  void back_right(int t)
  {OnFwd(OUT_C);
   Wait(t);
   Off(OUT_C);
  }
  
  void go_left(int t)
  {OnFwd(OUT_A);
   Wait(t);
   Off(OUT_C);
  }
  
  void back_left(int t)
  {OnRev(OUT_A);
   Wait(t);
   Off(OUT_A);
  }
  
  task main()
  {
      pen_down();  //ペンをおろす
      go(150);  //右の1画目をかく
      pen_up();  //ペンをあげる
      go(100);  //右の2画目の始点へ移動
      go_left(100);
      back_left(400);
      back(50);
      pen_down();  //ペンをおろす
      go(130);  //右の2画目をかく
      pen_up();  //ペンをあげる
      go(130);  //右の3画目の始点へ移動
      back_left(390);
      back(125);
      go(100);
      pen_down();  //ペンをおろす
      go(70);  //右の3画目をかく
      pen_up();  //ペンをあげる
      go(190);  //右の4画目の始点へ移動
      back_right(450);
      back(30);
      pen_down();  //ペンをおろす
      go(100);
      pen_up();  //ペンをあげる
      go(220);  //4画目の残りをかくための始点へ移動
      back_left(400);
      back(65);
      pen_down();  //ペンをおろす
      go(70);  //4画目の残りをかく
      pen_up();  //ペンをあげる
      go(220);  //右の5画目の始点へ移動
      back_left(420);
      go(40);
      pen_down();  //ペンをおろす
      back(100);  //右の5画目をかく
      pen_up();  //ペンをあげる
  }
***感想 [#gda3f10f]
同じプログラムであっても書く度に形が変わり大変だった。
ペンをアームに固定するのに苦労した。ペンをアームに固定するためにしっかりと固定できる太さのペンを選んだり、いろいろなパーツを組み合わせてきつく締めることでなんとか解決できた。
**コメントはこちらへ [#w3d78c7e]
-苦労した点について、その解決方法なども簡単に紹介してください。 -- [[松本(教員)]] &new{2005-11-17 (木) 23:54:55};

#comment

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