目次
ムスカRV-X05 (命名いばらきけんみん)
最も使うであろうモーターに対する命令を定義やマクロ、サブルーチンや関数を使用して表した。
#define a OUT_A #define b OUT_B #define c OUT_C #define d OUT_A+OUT_C #define e OnFwd(OUT_A);Wait(20);Off(OUT_A); #define f OnFwd(OUT_C);Wait(20);Off(OUT_C); #define asd(zt) OnFwd(d);Wait(zt);Off(d); #define dsa(tz) OnRev(d);Wait(tz);Off(d);
void turn_left(int t) { dsa(100); //bあげる asd(50) //書かずに進む OnFwd(c);OnRev(a);Wait(t);Off(d); //回転 dsa(66); //バック asd(100); //bさげる }
sub turn_right() {OnRev(b);Wait(100);Off(b); //bあげる asd(50); //書かずに進む OnFwd(a);OnRev(c);Wait(100);Off(d); //回転 dsa(66); //バック asd(100); //bさげる }
ただ、最初に定義を考えてからプログラムを考えたせいで、途中で微調整が出来ず、かえってプログラムが長く見にくくなってしまった。
repeat(6){e;f;} //髪の毛
おそらく最もコンパクト化に成功した部分。
OnRev(b);Wait(100);Off(b); //bあげる OnFwd(d);Wait(58);Off(d); //書かずに進む OnFwd(c);OnRev(a);Wait(90);Off(d); //回転 OnRev(d);Wait(66);Off(d); //バック OnFwd(b);Wait(100);Off(b); //bさげる
髪の書き終わりから輪郭の書き始めに90°回転する部分。割とスムーズに行った。
asd(100) //前進 //輪郭初め turn_left(50); asd(46) //前進 turn_left(40); asd(52) //前進 turn_left(50); asd(46) //前進 turn_left(45); asd(100) //前進 //輪郭終わり
顔の輪郭。おそらく最も手間をかけた部分。というかここで力尽きた。orz
dsa(30); //バック turn_left(30); asd(21) turn_left(66); asd(95) turn_left(66); asd(21) turn_left(125);
OnFwd(d);Wait(115);Off(d); OnRev(d);Wait(15);Off(d); turn_right(); OnFwd(d);Wait(30);Off(d); turn_right(); OnFwd(d);Wait(38);Off(d); turn_right(); OnFwd(d);Wait(30);Off(d); turn_left(100); OnRev(b);Wait(100);Off(b); //bあげる OnFwd(d);Wait(30);Off(d); OnFwd(b);Wait(100);Off(b); //bさげる turn_left(100); OnFwd(d);Wait(30);Off(d); turn_right(); OnFwd(d);Wait(38);Off(d); turn_right(); OnFwd(d);Wait(30);Off(d);
最も失敗した部分。定義を最初にしたことによるしわ寄せが一気に来た。修正したかったがあまりにも酷過ぎたので諦めた。
今回のプログラミングほぼ共同で作業したせいでほとんどの部分が同じになったので、この部分だけ別々に作業した。
・いばらきけんみんの場合 シンプルな感じ
OnRev(b);Wait(100);Off(b); //bあげる OnRev(d); Wait(75);Off(d); OnFwd(b);Wait(100);Off(b); //bさげる turn_right(); OnFwd(d);Wait(32);Off(d); turn_left(100); OnRev(b);Wait(100);Off(b); //bあげる OnFwd(d);Wait(16);Off(d); OnFwd(b);Wait(100);Off(b); //bさげる e;f;Off(d);
・ばるす!の場合 去年までの写真を見る限り、口にこだわっていたグループはほぼなかったので、少し拘ってみた。
OnRev(b);Wait(100);Off(b); //bあげる OnRev(d); Wait(75);Off(d); OnFwd(b);Wait(100);Off(b); //bさげる turn_right(); OnFwd(d);Wait(32);Off(d); turn_left(100); OnRev(b);Wait(100);Off(b); //bあげる OnFwd(d);Wait(16);Off(d); OnFwd(b);Wait(100);Off(b); //bさげる e;f;Off(d); turn_left(180); OnRev(b);Wait(100);Off(b); //bあげる OnFwd(d);Wait(40);Off(d); turn_left(90); e;f;Off(d);
最も適当になった部分。正直線だけで表すことはしたくなかったのだがこれしか思いつかなかった。もっと芸術的センスがあったら…
ゆっくりかいていってね!!!