]追加された行はこの色です。削除された行はこの色です。[#vcc93610]※コンパイルは通っていますが、実機で動かしたわけではありません。~うまく動く保証はどこにもありません。~[[michaegonのプログラム>2013b/Member/michaegon/Mission2]]のほうがよほどいいです。[#tb1ebc02]#ref(2013b/Member/dyuma/Mission2/program/Screenshot_2014-02-03_14-23-20.png,480x360);緑、青、赤の順にこなします。大量にdefineされていますけど、上半分程は僕がnxcプログラムを書くときにテンプレとして置いているものなので、使わなかったものも多いです。~いちいち定義を書かずとも、ある程度は指定できるのがいいです。count[3]={0,0,0};今回はカウンターは配列形式にしています。~白ければcount[0]を+1、黒ければcount[1]を+1、交差点と判定されればcount[2]を+1します。}通信用のプログラムを別に置いています。~こうすることで、いちいちややこしい送信文、受信文を書かなくてもいいようにしました。}スタート時の動作です。~通信テストを行い、ライントレースに行くまでの動作が書かれています。}缶があれば1を、なければ0を返す関数です。}もし缶があれば、近づいた上で、キックしろという命令を送ります。}各LAPの終了行動、つまり缶を立てる時の動作が書かれています。}ライントレースについて書かれています。~ここでは光センサーの値により、各モーターをどの速度で回すか指定しています。~課題1のような二段階、さらには6段階などより、格段に多くの段階になっています。~もしうまくいかなければ、課題1が終わったあとで書いた6段階、それでもうまく行かなければ課題1のときの二段階のライントレースに差し替えることもできます。}非常にめんどくさく書かれていますが、通過した交差点の数でいまどこにいるかを把握し、それに対応した行動を行っていくプログラムです。~もしこのプログラムを調整することがあるならば、最も調整が必要と思われる部分の一つです。}最終行動が書かれています。}メインは簡潔にかかれています。~たったこれだけです。14defineはメインと変わってません。}この辺はまだ空白です。~SHIMEで「閉めて」、TATEで「立てて」、HANASUで「離し」ます。~最終的には消す予定ではありました、というのは同じようなものをmichaegonが書いていましたので。}わかりやすいようにこう書いてはいますが、michaegonのプログラムをそのまま持ってくる、うまく行かなければその場で合ったものを書く予定でした。}最後の行動が終了した時の音をだすOTO「音」と、缶を叩き込むKERI「蹴り」をここで書く予定でした。~michaegonのプログラムをそのまま持ってくるなり、その場で書くなりする予定でした。}メインのプログラムは、通信された時にどう返すかのみ書かれています。~それ以外は必要ありませんので。[#ta279b59]結果的に使われることのなかったプログラムですが、メインの方はそこそこ上手く書けていると思います。~サブの方は空白も多く、実際に機体を見ながら、試しながら書く前提で書いたので、こんな感じになっています。~まだまだ直すべき点は多いと思います。~今後の課題にしたいです。