ホーム 各画面の機能 プログラムガイド 命令一覧 武器データ 脚部データ

 プログラムガイド

プログラムの流れ

  • プログラムは「開始コネクタ『START』」から下方向のブロックに処理が進みます。
開始コネクタ

処理の流れ

  • 命令を並べた場合、そのまま進行方向へと処理が進んでいきます。
  • 処理の方向を変えたい場合は、「ラインブロック」を使用します。
処理は「START」から始まり、
赤い矢印のように進みます。

特殊なライン

  • 合流ライン(AとB)に横から侵入した場合、処理は下方向に進みます。
  • 交差ライン(C)は上下、左右をつなぎます。
  • 交差ラインで進行方向が変わることはありません。

開始コネクタとジャンプコネクタ

  • 開始コネクタとジャンプコネクタを使って、離れた場所に処理を飛ばすことができます。
  • ジャンプコネクタに処理が移動した場合、同じ番号の開始コネクタに処理が移ります。
ジャンプコネクタからは、
同じ番号の開始コネクタに
処理が移ります。

条件分岐とY/Nライン

  • 何らかの判定を行うコマンドの場合、判定結果によって処理が分岐します。
  • 条件を満たした場合はYESラインへ、条件を満たさない場合はNOラインへ処理が進みます。
  • YESとNOのラインがない場合は、エラーになるので注意してください。
ランダムで20%の確率でYESに、
80%の確率でNOに分岐します。

 

基本的なプログラム

Tutrial 1 : フィールドを歩き回る

まず最初に、戦闘フィールド内を歩き回るプログラムを組んでみましょう。前方にロボットの移動を妨げる物体があったら右に旋回、無い場合は前に進む、というシンプルなプログラムです。実際にロボット「Tutorial-1」を使って、動作を試してみてください。
DIRECTION AT-RB FRONTで、
前方にロボットの移動を妨げる物が
あるかどうか調べています。

Tutrial 2 : 敵を見つける

次に、敵を見つけたら敵のほうを向く、という処理を追加してみましょう。右前に敵がいたら右に旋回、左前に敵がいたら左に旋回を追加すると、下記のようになります。とりあえず敵に向かって突撃するようになります。
敵がいるかどうか調べるには
ENEMYを指定します。

FR-Rは前方右方向を、
FR-Lは前方左方向を調べます。

Tutrial 3 : 敵に向かって攻撃する

敵に向かって攻撃するようにしてみましょう。正面に敵がいたら攻撃、という処理を追加します。これで一応、戦闘することができるプログラムの完成です。

ATTACK WPN1 USEで
武器1を使用します。

 

汎用的な処理の例

敵まで射線が通っているか判定する

  • 敵との間に弾を遮る障害物がない時だけ射撃するには、下記のようなプログラムを使用します。
  • 敵との距離はHEX(6角形のマス1つ)単位で数えます。
  • 敵との距離が1HEXの時は射撃。
  • 敵との距離が2~3HEXの時は、2HEX以内に障害物がなければ射撃。
  • それ以上遠い時は4HEX以内に障害物がなければ射撃。

自分の全周囲を索敵する

  • 自分の周り6方向すべてに敵がいるかどうかチェックするには、下記のようなプログラムを使用します。

 

上級者向けの情報

プログラムの圧縮

  • 賢いロボットを作ろうとすると、限られたプログラムエリアに効率よく命令を詰め込むことが必要になってきます。
  • 合流ラインと交差ラインは、1つのブロックに2つのラインがあるようなものなので、うまく使うとプログラムの面積を減らすことができます。
  • また、同じ命令がいろいろな場所にある場合は、合流して命令の数を減らすことも有効です。
  • 下記のプログラムは、先ほど紹介した射線判定のプログラムを圧縮したものです。
  • まったく同じ動作をしますが、使用するブロックの数が減っています。
合流ラインと交差ラインで2ブロック節約し、
ATTACK→STARTを共有化して2ブロック節約、
合計4ブロック減っています。

プログラム遷移の詳細仕様

  • 複雑なプログラムを書く場合、プログラムがどのように遷移するかを正確に知っておく必要があります。
  • 詳細な仕様は下記のようになります。
  • 現在のブロックが開始コネクタの場合、下のブロックに遷移。

  • 現在のブロックがジャンプコネクタの場合、同じ番号の開始コネクタに遷移。

    • 開始コネクタが複数ある場合は、左上に近いものに遷移。

  • 現在のブロックが判定ブロックで、結果がYESの場合、YESラインに遷移。

    • 但し、現在のブロックに処理が移る際に通ったラインには戻らない。

    • 複数のYESラインが接続されている場合、下、右、左、上の順に優先される。

  • 現在のブロックが判定ブロックで、結果がNOの場合、NOラインに遷移。

    • 但し、現在のブロックに処理が移る際に通ったラインには戻らない。

    • 複数のNOラインが接続されている場合、下、右、左、上の順に優先される。

  • 現在のブロックが命令ブロック(分岐しないブロック)の場合、下記の順に遷移先が決定される。

    • 現在のブロックの下にジャンプコネクタがある場合、下に遷移。

    • 現在のブロックにラインが接続されている場合、そのラインに遷移。

    • 但し、現在のブロックに処理が移る際に通ったラインには戻らない。

    • 複数のラインが接続されている場合、下、右、左、上の順に優先される。

  • 上記を満たさない場合、直進方向に遷移する。


©2016 Lighthouse Labo. All rights are reserved.