[#m527a634]
sub Pen_Down() {OnFwd(OUT_B);Float(OUT_B);Wait(50);} //Float によりペンが地面へとゆっくり着地するようにした。また、Wait はペンが地面に着地するまで機体が動き出さないようにするためのもの sub Pen_Up() {OnRev(OUT_B);} //モータを止めてしまうとペンの重みで勝手に下がってきてしまうので、あえてモータは止めないでおいた void Right_Turn(int t){OnFwd(OUT_A);OnRev(OUT_C);Wait(t);} //場所によって機体の向きを変える時間が異なるので、void を使い、微調整できるようにした void Left_Turn(int t){OnFwd(OUT_C);OnRev(OUT_A);Wait(t);} //同上 void Back(int t) {OnRev(OUT_A+OUT_C);Wait(t);} //文字の中で、それぞれの線分の長さの違いを示すために場所により微調整を行なえるようにした void Go(int t){OnFwd(OUT_A+OUT_C);Wait(t);} //同上 sub Stop() {Off(OUT_A+OUT_C);Wait(50);} //特に意味はないが、文字を書き終えた機体を止める際に使う(ただのおまけ)
・左右を反対方向に 0.85 秒回せば、機体が 90 度回る事は多くの班で気づいている事だと思うけど、あえて sub で指示をせず、 void にして time 値を状況ごとに変えれるようにして微調整を行なった。
task main() {Pen_Down();Wait(20);Go(120);Pen_Up();Stop(); //一画目→普通に機体を前進させて書く Back(85);Left_Turn(20);Stop(); //二画目への移動(*) Pen_Down();Wait(50);Right_Turn(70);Pen_Up(); //二画目→メリットを活かし、機体の旋回だけで引く Go(50);Left_Turn(50);Back(45);Stop(); //三画目への移動(*) Pen_Down();Go(60);Stop();Pen_Up(); //三画目→一画目と同様 Go(80);Left_Turn(85);Back(124);Stop(); //四画目への移動 Pen_Down();Back(50);Stop(); //四画目→一画目と同様。しかし、今回は後退によって引く Pen_Up();Go(100);Left_Turn(85);Back(75);Stop(); //五画目への移動 Pen_Down();Back(80);Stop(); //五画目→四画目と同様。しかし、三画目とは長さが違う Pen_Up();Right_Turn(85);Back(50);Off(OUT_A+OUT_B+OUT_C);} //文字を書き終えた機体を、邪魔にならない所(文字の左下)へ移動
・機体はグループで話し合って作りましたが、プログラムは自分でしか作れないので大変でした。特に微調整に多くの時間をかけたけど、上手く書けたので良かったです。