NXCのプログラミングで役立つこと

NXCとかで役立つこと

※これはの可読性(プログラムが見やすいかどうか)を少しでも向上させてほしいという願いのもとで書いてます。

前進、左回転、右回転、後退は関数にまとめることができる(モジュール化)。自分がモジュール化すると、それはこんな感じ。

/*直進、左旋回、右旋回ができる
引数は、右のパワー、左のパワー、待ち時間となる。*/
sub goForward(int left_power, int right_power,int  wait_time)
{
    OnFwd(OUT_C,left_power);
    OnFwd(OUT_B,right_power);
    Wait(wait_time);
}

/*右回転
引数は、右のパワー、左のパワー、待ち時間となる。*/
sub turnRight(int left_power, int right_power,int wait_time)
{
    OnRev(OUT_C,left_power);
    OnFwd(OUT_B,right_power);
    Wait(wait_time);
}

/*左回転
引数は、右のパワー、左のパワー、待ち時間となる。
*/
sub turnLeft(int left_power, int right_power,int wait_time)
{
    OnFwd(OUT_C,left_power);
    OnRev(OUT_B,right_power);
    Wait(wait_time);
}

/*後退
引数は、右のパワー、左のパワー、待ち時間となる。
*/
sub goBackward(int left_power, int right_power,int wait_time)
{
    OnRev(OUT_C,left_power);
    OnRev(OUT_B,right_power);
    Wait(wait_time);
}

こんな感じにするとかなりプログラムは作りやすくなる。

実際に使う場合は

OnFwd(OUT_B,50);
OnFwd(OUT_C,50);
Wait(50);
↓
goForward(50,50,50)
OnRev(OUT_B,50);
OnFwd(OUT_C,50);
Wait(50);
↓
turnRight(50,50,50);
OnRev(OUT_B,50);
OnFwd(OUT_C,50);
Wait(50);
↓
turnLeft(50,50,50);
OnRev(OUT_C,left_power);
OnRev(OUT_B,right_power);
Wait(50);
↓
goBackward(50,50,50);

のようになる。↑のように書くメリットは、コード量を圧縮でき、理解がしやすくなること。
関数化しないとソースコードがとても見づらいものになり、作ることも見ることも大変労力を使うものになります。他の人もソースコードを見るのでせめて基本的な動きは関数化するようにしてください。

実際に使う場合

実際に使う場合はソースコードの上部にコピペで貼りつけるか(オススメしない)、ヘッダファイルにコピペしてインクルードして使う(オススメ)。

ヘッダファイルに書く場合は、
1.↑のソースコードをコピペして、例えばstdaction.h(standard action)とそれっぽいファイル名で保存する。他に適当な名前があれば変更するとイイ。
2.保存をする場合は実際使うソースコードと同じフォルダ階層に入れる。
3.入れ終わったら実際使うソースコード

#include "stdaction.h"

と入れると使えるようになるはず。

>>>>2012/1/30 追記
記事の書き方をはてなダイアリーに最適化したものに変更。実際使う場合のやり方を追加。