#define DOWN OnFwd(OUT_B);Wait(40);Off(OUT_B);//筆を下ろす作業。 #define B_WAIT Wait(50);止まる時間。 #define UP OnRev(OUT_B);Wait(40);Off(OUT_B);筆を上げる作業。 #define RUN_YOKO OnFwd(OUT_A+OUT_C);Wait(100);Off(OUT_A+OUT_C);横に進む動作。 #define RUN_TATE OnFwd(OUT_A+OUT_C);Wait(80);Off(OUT_A+OUT_C);縦に進む動作。 task main() { /*一画目『田』の「|」の部分を書く。*/ DOWN B_WAIT RUN_TATE UP /*一画目〜二画目への移動。*/ OnRev(OUT_A+OUT_C); Wait(146); Off(OUT_A+OUT_C); OnFwd(OUT_C); OnRev(OUT_A); Wait(85); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(66); Off(OUT_A+OUT_C); Wait(100); /*二画目『田』の「?」の部分を書く。*/ DOWN B_WAIT RUN_YOKO UP OnRev(OUT_A+OUT_C); Wait(66); OnFwd(OUT_A); OnRev(OUT_C); Wait(90); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(66); Off(OUT_A+OUT_C); Wait(100); DOWN B_WAIT RUN_TATE UP /*二画目〜三画目への移動。*/ OnFwd(OUT_A); OnRev(OUT_C); Wait(85); OnFwd(OUT_A+OUT_C); Wait(40); Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_C); OnRev(OUT_A); Wait(90); Off(OUT_A+OUT_C); Wait(100); OnRev(OUT_A+OUT_C); Wait(66); Off(OUT_A+OUT_C); Wait(100); /*三画目『田』の真ん中にある、「|」の部分を書く。*/ DOWN B_WAIT RUN_TATE UP /*三画目〜四画目への移動。*/ OnRev(OUT_A+OUT_C); Wait(105); Off(OUT_A+OUT_C); OnRev(OUT_A); OnFwd(OUT_C); Wait(95); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(20); Off(OUT_A+OUT_C); Wait(20); /*四画目『田』の真ん中の「―」の部分を書く。*/ DOWN B_WAIT RUN_YOKO UP /*四画目〜五画目への移動。*/ OnRev(OUT_A+OUT_C);Wait(100);Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(85); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(45); Off(OUT_A+OUT_C); OnRev(OUT_A); OnFwd(OUT_C); Wait(85); Off(OUT_A+OUT_C); Wait(100); /*五画目『田』の下にある「―」の部分を書く。*/ DOWN B_WAIT RUN_YOKO UP } /*おしまい。*/
最初、「田」という字は、曲線がないから、簡単に書けるかと思っていたが、案外、「田」の中の「十」の位置を合わせたり、書き初めの部分を見つける事が難しかった。
また、書いている場所(絨毯の上や、畳の上、机の上)により、抵抗が違うため、毎回完成した字が異なってしまったので、時間を設定する事に苦労しました。
プログラムの始めに、筆の上げ下げと縦横に進む距離を指定したので、かなりプログラムを短くする事に成功しました。(それでも十分多いですが……)
それと、それぞれの動きの間に、Waitを入れる事によって、ゆとりを取り入れる事が出来ました。
今回のプログラムでは、次の書き初めの場所に行く際に、簡単な方がいいと思い、全て90°曲げて、移動させていました。
だけれど、全てそのように設定するのでなく、次の書き初めまでの角度を計算して、回転する秒数を考えれば、もう少し、プログラムを簡単に出来たと考察できる。
なにか感想や、アドバイスがあったらお願いします。