[[2006b/A1/課題1右]]

#contents

*『田』を書くプログラム。 [#be873279]

 #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 
         }
        
         おしまい。
         /*おしまい。*/

*感想 [#lcffd938]
-難しかった点。

最初、「田」という字は、曲線がないから、簡単に書けるかと思っていたが、案外、「田」の中の「十」の位置を合わせたり、書き初めの部分を見つける事が難しかった。

また、書いている場所(絨毯の上や、畳の上、机の上)により、抵抗が違うため、毎回完成した字が異なってしまったので、時間を設定する事に苦労しました。
-工夫した点。

プログラムの始めに、筆の上げ下げと縦横に進む距離を指定したので、かなりプログラムを短くする事に成功しました。(それでも十分多いですが……)

それと、それぞれの動きの間に、Waitを入れる事によって、ゆとりを取り入れる事が出来ました。
-改良すれば良かった点。

今回のプログラムでは、次の書き初めの場所に行く際に、簡単な方がいいと思い、全て90°曲げて、移動させていました。

だけれど、全てそのように設定するのでなく、次の書き初めまでの角度を計算して、回転する秒数を考えれば、もう少し、プログラムを簡単に出来たと考察できる。

*コメント [#x0e042d4]

なにか感想や、アドバイスがあったらお願いします。
#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS