プログラミング「的思考」を学ぶために、クマの「グマミン」が様々なゲームに挑戦する「プログマミング」企画。
第1回はこちらをご覧ください。
前回は基本的なゲーム画面の見方や、プログラムの管理について触れました。
今回から、本格的にロボットに指示を出していきたいと思います!
命令の優先度を考える
前回の攻撃のさせ方は簡単でしたね。
「最も近い敵を攻撃する」という命令で、自動で射程圏内の敵に攻撃をしてくれます。
では、射程圏内にいなかったら、、、?
ということで、次は「接近」です。
まずはフィールド画像を見てください。
ここで現在のプログラムをチェック。
「最も近い敵機(短距離または中距離)に攻撃する」となっています。
これでは遠距離の敵に攻撃を当てることはできません。
そこで、こちら。
「最も近い敵機に接近する」という命令を新たに追加します。
これで、敵に近付きつつ、射程圏内で攻撃をする、という命令になりました。
どんどん近づくロボ。
あ、あれ、、、?攻撃しないぞ?
ものすごく近い距離まで移動しても、攻撃してくれません、、。
ここで「優先度」の話となりました。
このプログラム表では、反時計回りに進むにつれて、命令の優先順位が低くなるのです。
つまり先ほどのプログラムだと、、
「敵機に近付く」>「攻撃する」
という優先順位の問題が発生し、延々と敵に近付くだけのプログラムとなるのです。
というわけで、こんな風にプログラムを修正。
これで、「敵機に近付く」<「攻撃する」という関係に。
つまり、はじめは攻撃ができないので「近づく」という命令に従いますが、近づいたら「攻撃する」という命令を優先し、敵に攻撃をしてくれるようになるのです。
修正してもう一度挑戦。まずは近づいていき、、、
中距離から相手の撃破に成功!
これが「優先順位」の考え方になります。
条件判断を考える
続いては「条件判断」について学びます。
まず、このアリーナですが、1VS2でピンチの状況。
白いメーターが「シールド」の残量なのですが、、、
ただの打ち合いになりあっけなく敗北してしまいました、、、。
この場合、何が問題なのでしょうか?
ちなみに、シールドは少し時間を置くと徐々に回復します。
さぁ、命令をいじりましょう。
ここでの答えは、
「近づいて攻撃する」→「シールドが壊れたらいったん回復するまで離脱」→「また近づいて攻撃」
を繰り返すことです。
ここで必要なのが、緑のボックス「条件判断」です。
条件判断にはさらにノードをつなげることができるので、「その条件を満たしているときに、つないでいる命令を実行する」ということが可能となります。
プログラムはこんな感じに。
「もし自機のシールドが0なら」、「敵から離れる」、「シールドが0以上の場合は相手に攻撃」、「相手に接近」
以上の命令を組み合わせて、再度バトルへ。
これはシールドが壊れた状態ですが、すみやかに後ろへ下がるように。
そしてシールドが回復すると、再度接近!
前後へのムーブを繰り返し、撃破に成功しました。
いかがでしたか?自分でプログラムしてみると、なんだか頭がよくなった気がしてくるのが不思議です。
やはりプログラムしたものがすぐに動いて可視化されるので、どこが問題なのかが一目でわかります。
次はもう一段階難しくなっていくらしいので、心してかかりたいと思います。
ではまた!