2006b/A1/課題1右

『田』を書くプログラム。

#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°曲げて、移動させていました。

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

コメント

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



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-11-22 (水) 21:52:26