- 追加された行はこの色です。
- 削除された行はこの色です。
[[2005/C1/宇佐美]]
[[2005/C1/宇佐美]]
#contents
**課題:「左」を書く書道ロボット [#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();
//ペンを上げる
}
感想:定義と関数を使って改良してみた。
プログラムを見るだけで、動きがなんとなくわかるプログラムに
なったと思う。
#comment