2005/A5/課題1右/課題1右 SASver.

2005/A5/課題1右

『右』を書く

プログラム

マクロを使って短くしたプログラムを掲載しました。New!

長いままのプログラム(マクロで直す前)

//作成者:SAS
//作成日時:10/29、最終更新日:11/4
int r_angled ;

sub up_pen()
{
   SetPower(OUT_B,0);
   OnFwd(OUT_B);
   Wait(20);
   Off(OUT_B);
}

sub down_pen()
{
   SetPower(OUT_B,0);
   OnRev(OUT_B);
   Wait(20);
   Off(OUT_B);
}

task main()
{
   r_angled = 86;

   Wait(200);

   down_pen();
   OnFwd(OUT_A);
   OnRev(OUT_C);//start 1st stroke
   Wait(60);
   Off(OUT_A+OUT_C);//finish 1st stroke

   up_pen();

   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(142);
   Off(OUT_C);

   OnRev(OUT_A+OUT_C);
   Wait(20);
   Off(OUT_A+OUT_C);

   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(r_angled);
   Off(OUT_A+OUT_C);

   OnRev(OUT_A+OUT_C);
   Wait(15);
   Off(OUT_A+OUT_C);

   down_pen();

   OnFwd(OUT_A+OUT_C);//start 2nd stroke
   Wait(70);
   Off(OUT_A+OUT_C);//finish 2nd stroke

   up_pen();

   OnFwd(OUT_A+OUT_C);
   Wait(0);
   Off(OUT_A+OUT_C);

   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(r_angled);
   Off(OUT_A+OUT_C);

   OnRev(OUT_A+OUT_C);
   Wait(40);
   Off(OUT_A+OUT_C);

   down_pen();

   OnFwd(OUT_A+OUT_C);//start 3rd stroke
   Wait(30);
   Off(OUT_A+OUT_C);//finish 3rd stroke

   up_pen();

   OnFwd(OUT_A+OUT_C);
   Wait(30);
   Off(OUT_A+OUT_C);

   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(r_angled);
   Off(OUT_A+OUT_C);
   
   OnRev(OUT_A+OUT_C);
   Wait(65);
   Off(OUT_A+OUT_C);
   
   down_pen();
   
   OnFwd(OUT_A+OUT_C);//start 4th stroke(1)
   Wait(50);
   Off(OUT_A+OUT_C);//finish 4th stroke(1)
   
   up_pen();
   
   OnFwd(OUT_A+OUT_C);
   Wait(65);
   Off(OUT_A+OUT_C);
   
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(92);
   Off(OUT_A+OUT_C);
   
   OnRev(OUT_A+OUT_C);
   Wait(55);
   Off(OUT_A+OUT_C);
   
   down_pen();
   
   OnFwd(OUT_A+OUT_C);//start 4th stroke(2)
   Wait(30);
   Off(OUT_A+OUT_C);//start 4th stroke(2)
   
   up_pen();
   
   OnFwd(OUT_A+OUT_C);
   Wait(65);
   Off(OUT_A+OUT_C);
   
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(85);
   Off(OUT_A+OUT_C);
   
   OnRev(OUT_A+OUT_C);
   Wait(20);
   Off(OUT_A+OUT_C);
   
   down_pen();
   
   OnRev(OUT_A+OUT_C);//start 5th stroke
   Wait(35);
   Off(OUT_A+OUT_C);//finish 5th stroke
}

短くしたプログラム(マクロを使用)

//作成者:SAS
//作成日時:11/11
int r_angled ;
int adjust ;

sub up_pen()
{
   SetPower(OUT_B,0);
   OnFwd(OUT_B);
   Wait(20);
   Off(OUT_B);
}

sub down_pen()
{
   SetPower(OUT_B,0);
   OnRev(OUT_B);
   Wait(20);
   Off(OUT_B);
}

#define first_stroke down_pen();OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_A+OUT_C);up_pen(); OnFwd(OUT_C);OnRev(OUT_A);Wait(142);Off(OUT_C);
#define second_stroke down_pen();OnFwd(OUT_A+OUT_C);Wait(70);Off(OUT_A+OUT_C);up_pen();
#define third_stroke down_pen();OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);up_pen();
#define fourth_stroke_one down_pen();OnFwd(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);up_pen();
#define fourth_stroke_two down_pen();OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);up_pen();
#define fifth_stroke down_pen();OnRev(OUT_A+OUT_C);Wait(35);Off(OUT_A+OUT_C);up_pen();
#define go_st OnFwd(OUT_A+OUT_C);Wait(adjust);Off(OUT_A+OUT_C);
#define go_back OnRev(OUT_A+OUT_C);Wait(adjust);Off(OUT_A+OUT_C);
#define turn_r_r OnFwd(OUT_A);OnRev(OUT_C);Wait(r_angled);Off(OUT_A+OUT_C);
#define turn_l_r OnFwd(OUT_C);OnRev(OUT_A);Wait(r_angled);Off(OUT_A+OUT_C);

task main()
{
   r_angled = 86;
   adjust = 20;

   Wait(200);

   first_stroke;

   go_back;
   
   turn_r_r;

   adjust -= 5 ;//15
   go_back;

   second_stroke;

   adjust -= 15 ;//0
   go_st;
   
   turn_r_r;

   adjust += 40 ;//40
   go_back;

   third_stroke;

   adjust -= 10 ;//30
   go_st;
   
   turn_l_r;
   
   adjust += 35 ;//65
   go_back;
   
   fourth_stroke_one;

   go_st;
   
   r_angled = r_angled + 6 ;

   turn_r_r;
   
   adjust -= 10 ;//55
   go_back;
   
   fourth_stroke_two;
   
   adjust += 10 ;//65

   go_st;
   
   turn_r_r;
   
   adjust -= 45 ;//20
   go_back;
   
   fifth_stroke;
}

ロボット

&ref(): File not found: "課題1 ペンを持つ 囲み\'.JPG" at page "2005/A5/課題1右 SASver.";

ロボットについてコメントをどうぞ


総括

後から考えるとプログラム・ロボット双方に改善の余地はまだまだあるが、とりあえずは『右』という文字がちゃんと書けて良かったと思う。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-25 (金) 15:12:55