- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a]]
目次
#contents
*第一回課題内容 [#ad781f63]
似顔絵ロボットを作成せよ!!
*ロボットの作成 [#i6b49164]
二人ともロボット作成が苦手ということで、、、かなりの時間を使いました;;;無論プログラムも苦手、、
とりあえず本を片手に色々作成。
&br;
**足の部分 [#p5c87dae]
まずは足の部分ですが、最初はカッコいいという理由でキャタピラを採用。
&br;しかし似顔絵を書く時に紙と摩擦が大きすぎてズレるという理由と小回りが効きにくいという理由でタイヤに変更。
&br;これで紙がずれることはなくなりました。
&br;
**ペンを持つ部分 [#z19c89f6]
一番苦労したのがペンを持つ部分です。ここは本にも載ってなかったので、、
&br;作ってみたはいいけど全然動かないこともありました。
&br;そうやって苦労してやっと完成したのがこれ!
&br;&ref(ペン.jpg);
&br;タイヤの回転によりペンが上げ下げするタイプです。
&br;一番上のタイヤでペンをしっかり固定させる工夫もしました。
&br;こんなかんじでペンをはさみます。
&br;&ref(ペン持ってる.jpg);
&br;タイヤを3個にすることでペンがうまく垂直になりました。
&br;タイヤを3個にすることでペンがうまく固定され、違う太さのペンにも対応できるように。
&br;土台作成に使ってた青い部分がペン移動の装置を付けるのに邪魔だったので1個駆除
&br;本通りの土台の位置より前に土台をおく事で重心を安定させ、ペン移動の装置を付けやすくしました。
**完成!! [#ncfa0dd5]
完成したロボットがこちら。
&br;&ref(本体.jpg);
&br;&ref(本体後ろ.jpg);
&br;かっこよく羽もつけました。(笑)
**プログラミング [#v5628bf4]
関数を使って極力無駄を省きました。
関数を使って極力無駄を省き、最初の丸を書くときにペンが浮いて円が書けなくなるのを1秒ごとにペンをしたに動かすことによってなんとか丸完成。
&br;これも書くの大変でした、、
&br;&br;<だる>
#define down OnRev(OUT_B);Wait(12);Off(OUT_B); //ペンを下げる
#define up OnFwd(OUT_B);Wait(8);Off(OUT_B); //ペンを上げる
#define go_st(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //t秒間まっすぐ進む
#define maru(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //円を書く
#define turn_r(t) 0nFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_C+OUT_A); //t秒間右に曲がる
#define turn_l(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A;+OUT_C); //t秒間左に曲がる
#define turn_190_r OnFwd(OUT_C);OnRev(OUT_A);Wait(65);Off(OUT_C+OUT_A); //右に90度曲がる
#define turn_190_l OnFwd(OUT_A);OnRev(OUT_C);Wait(65);Off(OUT_A+OUT_C); //左に90度曲がる
task main(){ OnRev(OUT_B);Wait(1);Off(OUT_B);
maru(100);
OnRev(OUT_B);Wait(1);Off(OUT_B);
maru(325);
up; //輪郭を書く
go_st(10);
turn_190_r;
go_st(10);
down;
go_st(30);
up;
go_st(25);
down;
go_st(15);
up; //目を書く
up; //目を書く(横顔な感じにするために目の長さを調整)
OnRev(OUT_A+OUT_C);Wait(35);Off(OUT_A+OUT_C);
turn_190_l;
down;
go_st(25);
up; //鼻を書く
up; //鼻を書く(鼻を飛び出てる感じにするため長さを微調整)
OnRev(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);
down;
OnRev(OUT_A);Wait(50);Off(OUT_A);
up; //口を書く
}
こうしてできた顔が,,こちら。
&br;鼻が高い感じが似てるかなあと思います。(笑)
&br;&br;<えり>
ここにプログラムはっといて☆
こうしてできた顔が,,こちら。
こうしてできた顔が,,こちら。&br;&ref(daru);
&br;素敵な横顔、鼻が高い感じが似てるかなあと思います。(笑)
&br;&br;<えり> 省略記号は上と同じです。
#define down(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
#define up OnFwd(OUT_B);Wait(8);Off(OUT_B);
#define go_st(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define maru(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define turn_r(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_C+OUT_A);
#define turn_l(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define turn_190_r OnFwd(OUT_C);OnRev(OUT_A);Wait(65);Off(OUT_C+OUT_A);
#define turn_190_l OnFwd(OUT_A);OnRev(OUT_C);Wait(65);Off(OUT_A+OUT_C);
#define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
task main(){ down(1);
maru(100);
down(1);
maru(100);
down(1);
maru(100);
down(1)
maru(150); //輪郭を書く
up;
go_st(5);
turn_190_r;
go_st(10);
down(12);
OnFwd(OUT_A);Wait(30);Off(OUT_A);
OnFwd(OUT_C);Wait(30);Off(OUT_C); //左目をかく
up;
turn_l(20);
go_st(20);
down(12);
OnFwd(OUT_A);Wait(30);Off(OUT_A);
OnFwd(OUT_C);Wait(30);Off(OUT_C); //右目を書く
up;
turn_r(30);
back(65)
down(12);
maru(15);
go_st(60);
OnFwd(OUT_C);OnRev(OUT_A);Wait(15);Off(OUT_A+OUT_C);
//口を書く(輪郭の丸みを利用して笑顔を強調)
}
こうしてできた顔が,,こちら。&br;&ref(eri);
&br;ニコニコ顔になりました。
*感想 [#ha1efa74]
<だる>
<だる>衝突があったり、色々大変だったけど顔が完成した時はかなり感動しました。えり。感謝!!!
&br;<えり>
&br;一時はどうなるかと思ったけれど、無事完成して本当によかったです。
&br;だるちゃんどうもありがとねー!☆
&br;&br;よかったらコメントお願いします。
- 書くべきことは書けていますし、サブルーチンを使っているのはよいと思います。~
あとは、似顔絵の写真を貼ったり、より詳しい説明を目指してください。~
過去のホームページを参考にしてもよいと思います -- [[FI]] &new{2009-05-21 (木) 09:29:21};
#comment