2009a 目次

第一回課題内容

 似顔絵ロボットを作成せよ!!

ロボットの作成

 二人ともロボット作成が苦手ということで、、、かなりの時間を使いました;;;無論プログラムも苦手、 コードネーム「ダルウイング」、 とりあえず本を片手に色々作成。

足の部分

 まずは足の部分ですが、最初はカッコいいという理由でキャタピラを採用。
しかし似顔絵を書く時に紙と摩擦が大きすぎてズレるという理由と小回りが効きにくいという理由でタイヤに変更。
これで紙がずれることはなくなりました。

ペンを持つ部分  

 一番苦労したのがペンを持つ部分です。ここは本にも載ってなかったので、、
作ってみたはいいけど全然動かないこともありました。
そうやって苦労してやっと完成したのがこれ!
pen.jpg
タイヤの回転によりペンが上げ下げするタイプです。
一番上のタイヤでペンをしっかり固定させる工夫もしました。
こんなかんじでペンをはさみます。
have pen.jpg
タイヤを3個にすることでペンがうまく固定され、違う太さのペンにも対応できるように。
土台作成に使ってた青い部分がペン移動の装置を付けるのに邪魔だったので1個駆除
本通りの土台の位置より前に土台をおく事で重心を安定させ、ペン移動の装置を付けやすくしました。

完成!!

 完成したロボットがこちら。


subject.jpg
back.jpg
かっこよく羽もつけました。(笑)

プログラミング

 関数を使って極力無駄を省き、最初の丸を書くときにペンが浮いて円が書けなくなるのを1秒ごとにペンをしたに動かすことによってなんとか丸完成。
これも書くの大変でした、、

<だる>

#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(){ repeat(3){        
                           down(1);
                           maru(100);}
                           down(1);
                           maru(125);  //(輪郭を書く)
                           up;                                              
                           go_st(10);
                           turn_190_r;
                           go_st(50);
                           down(12);
                           go_st(30);  //右目を書く(横顔にするため左と右の目の長さを変え、位置をずらしました。)
                           up;
                           go_st(25);
                           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;}  //完成
                           

こうしてできた顔が,,こちら。
daru.jpg
素敵な横顔、鼻が高い感じが似てるかなあと思います。(笑)
この絵を見て、この程度かコイツは。と思った方、間違いです。単純な線ばかりで作った理由は、、、、
コイツを見てください。
ruda.jpg なんと裏返すともう一つの顔が!!これは、悪戦苦闘して作ってる二人の顔です。会心の出来です。

<えり> 省略記号は上と同じです。

#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;}  //完成

こうしてできた顔が,,こちら。
eri.jpg
ニコニコ顔になりました。

感想

<だる>衝突があったり、色々大変だったけど顔が完成した時はかなり感動しました。えり。感謝!!!
<えり>一時はどうなるかと思ったけれど、無事完成して本当によかったです。だるちゃんどうもありがとねー!☆

よかったらコメントお願いします。

  • 書くべきことは書けていますし、マクロを使っているのはよいと思います。リピートや関数等用途に合わせて使い分けてください。
    あとは、似顔絵の写真を貼ったり、より詳しい説明を目指してください。
    過去のホームページを参考にしてもよいと思います -- FI? 2009-05-21 (木) 09:29:21
  • ロボットの写真と詳しい説明で工夫が伝わってきました。プログラミングに関しては、maruとdownを繰り返すあたり、もう少し改善できると思いますので是非考えてみてください! -- こさか? 2009-05-21 (木) 21:59:34
  • repeat使いました。見ていただけると嬉しいです。 -- えり? 2009-05-22 (金) 15:13:34
  • 俺の顔の裏返しについて書きました見てください。 -- ダル? 2009-05-22 (金) 15:29:26
  • repeatの使い方はバッチリです。いっそmaruの方にrepeatを入れてしまってもいいかも知れません。 顔の裏返しとは、上から見ても下から見ても顔!という意味でしょうか? -- こさか? 2009-05-28 (木) 23:47:53


添付ファイル: filedaru.jpg 228件 [詳細] fileeri.jpg 224件 [詳細] fileruda.jpg 205件 [詳細] filehave pen.jpg 237件 [詳細] filepen.jpg 216件 [詳細] fileback.jpg 210件 [詳細] filesubject.jpg 215件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-05-28 (木) 23:47:53 (3734d)