- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a]]
目次
#contents
*第一回課題内容 [#ad781f63]
似顔絵ロボットを作成せよ!!
*ロボットの作成 [#i6b49164]
二人ともロボット作成が苦手ということで、、、かなりの時間を使いました;;;無論プログラムも苦手、、
二人ともロボット作成が苦手ということで、、、かなりの時間を使いました;;;無論プログラムも苦手、
コードネーム「ダルウイング」、
とりあえず本を片手に色々作成。
&br;
**足の部分 [#p5c87dae]
まずは足の部分ですが、最初はカッコいいという理由でキャタピラを採用。
&br;しかし似顔絵を書く時に紙と摩擦が大きすぎてズレるという理由と小回りが効きにくいという理由でタイヤに変更。
&br;これで紙がずれることはなくなりました。
&br;
**ペンを持つ部分 [#z19c89f6]
一番苦労したのがペンを持つ部分です。ここは本にも載ってなかったので、、
&br;作ってみたはいいけど全然動かないこともありました。
&br;そうやって苦労してやっと完成したのがこれ!
&br;&ref(ペン.jpg);
&br;&ref(pen.jpg);
&br;タイヤの回転によりペンが上げ下げするタイプです。
&br;一番上のタイヤでペンをしっかり固定させる工夫もしました。
&br;こんなかんじでペンをはさみます。
&br;&ref(ペン持ってる.jpg);
&br;タイヤを3個にすることでペンがうまく垂直になりました。
&br;&ref(have pen.jpg);
&br;タイヤを3個にすることでペンがうまく固定され、違う太さのペンにも対応できるように。
&br;土台作成に使ってた青い部分がペン移動の装置を付けるのに邪魔だったので1個駆除
&br;本通りの土台の位置より前に土台をおく事で重心を安定させ、ペン移動の装置を付けやすくしました。
**完成!! [#ncfa0dd5]
完成したロボットがこちら。
&br;&ref(本体.jpg);
&br;&ref(本体後ろ.jpg);
&br;&ref(subject.jpg);
&br;&ref(back.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度曲がる
#define down(t) OnRev(OUT_B);Wait(t);Off(OUT_B); //ペンt秒を下げる
#define up OnFwd(OUT_B);Wait(8);Off(OUT_B); //ペンを8秒上げる
#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); //t秒回転移動
#define turn_r(t) OnFwd(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; //輪郭を書く
task main(){ repeat(3){
down(1);
maru(100);}
down(1);
maru(125); //(輪郭を書く)
up;
go_st(10);
turn_190_r;
go_st(10);
down;
go_st(30);
go_st(50);
down(12);
go_st(30); //右目を書く(横顔にするため左と右の目の長さを変え、位置をずらしました。)
up;
go_st(25);
down;
go_st(15);
up; //目を書く
OnRev(OUT_A+OUT_C);Wait(35);Off(OUT_A+OUT_C);
turn_190_l;
down;
go_st(25);
up; //鼻を書く
OnRev(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);
down;
OnRev(OUT_A);Wait(50);Off(OUT_A);
up; //口を書く
}
down(12);
go_st(15); //左目を書く
up;
OnRev(OUT_A+OUT_C);Wait(32);Off(OUT_A+OUT_C);
turn_l(70);
down(12);
go_st(25); //鼻を書く(顔から飛び出るように工夫)
up;
turn_r(5);
OnRev(OUT_A+OUT_C);Wait(40);Off(OUT_A+OUT_C);
down(12);
OnRev(OUT_A);Wait(50);Off(OUT_A); //口を書く
up;} //完成
こうしてできた顔が,,こちら。
&br;鼻が高い感じが似てるかなあと思います。(笑)
&br;&br;<えり>
ここにプログラムはっといて☆
こうしてできた顔が,,こちら。
こうしてできた顔が,,こちら。&br;&ref(daru.jpg);
&br;素敵な横顔、鼻が高い感じが似てるかなあと思います。(笑)
&br;この絵を見て、この程度かコイツは。と思った方、間違いです。単純な線ばかりで作った理由は、、、、
&br;コイツを見てください。&br;&ref(ruda.jpg);
なんと裏返すともう一つの顔が!!これは、悪戦苦闘して作ってる二人の顔です。会心の出来です。
&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(){ repeat(3){
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);//口を書く(輪郭の丸みを利用して笑顔を強調)
up;} //完成
こうしてできた顔が,,こちら。&br;&ref(eri.jpg);
&br;ニコニコ顔になりました。
*感想 [#ha1efa74]
<だる>
&br;<えり>
&br;一時はどうなるかと思ったけれど、無事完成して本当によかったです。
&br;だるちゃんどうもありがとねー!☆
<だる>衝突があったり、色々大変だったけど顔が完成した時はかなり感動しました。えり。感謝!!!
&br;<えり>一時はどうなるかと思ったけれど、無事完成して本当によかったです。だるちゃんどうもありがとねー!☆
&br;&br;よかったらコメントお願いします。
- 書くべきことは書けていますし、マクロを使っているのはよいと思います。リピートや関数等用途に合わせて使い分けてください。~
あとは、似顔絵の写真を貼ったり、より詳しい説明を目指してください。~
過去のホームページを参考にしてもよいと思います -- [[FI]] &new{2009-05-21 (木) 09:29:21};
- ロボットの写真と詳しい説明で工夫が伝わってきました。プログラミングに関しては、maruとdownを繰り返すあたり、もう少し改善できると思いますので是非考えてみてください! -- [[こさか]] &new{2009-05-21 (木) 21:59:34};
- repeat使いました。見ていただけると嬉しいです。 -- [[えり]] &new{2009-05-22 (金) 15:13:34};
- 俺の顔の裏返しについて書きました見てください。 -- [[ダル]] &new{2009-05-22 (金) 15:29:26};
- repeatの使い方はバッチリです。いっそmaruの方にrepeatを入れてしまってもいいかも知れません。 顔の裏返しとは、上から見ても下から見ても顔!という意味でしょうか? -- [[こさか]] &new{2009-05-28 (木) 23:47:53};
#comment