プログラミング

ロボットに条件判断をさせるには!?【GLADIABOTS】#2

プログラミング「的思考」を学ぶために、クマの「グマミン」が様々なゲームに挑戦する「プログマミング」企画。

第1回はこちらをご覧ください。

プログラミング「的思考」を学びたい【GLADIABOTS】#1みなさん、プログラミングを学んでいますか? 小学校教育に「プログラミング」が導入されるのが、たしか2020年、、、今年だったような気が...

前回は基本的なゲーム画面の見方や、プログラムの管理について触れました。

今回から、本格的にロボットに指示を出していきたいと思います!

グマミン
グマミン
気合い入れていこう!

命令の優先度を考える

前回の攻撃のさせ方は簡単でしたね。

「最も近い敵を攻撃する」という命令で、自動で射程圏内の敵に攻撃をしてくれます。

では、射程圏内にいなかったら、、、?

ということで、次は「接近」です。

まずはフィールド画像を見てください。

グマミン
グマミン
え!?敵との距離が遠くて攻撃できないよ、、、

ここで現在のプログラムをチェック。

「最も近い敵機(短距離または中距離)に攻撃する」となっています。

これでは遠距離の敵に攻撃を当てることはできません。

そこで、こちら。

「最も近い敵機に接近する」という命令を新たに追加します。

これで、敵に近付きつつ、射程圏内で攻撃をする、という命令になりました。

グマミン
グマミン
これで大丈夫なはず。

どんどん近づくロボ。

あ、あれ、、、?攻撃しないぞ?

ものすごく近い距離まで移動しても、攻撃してくれません、、。

ここで「優先度」の話となりました。

このプログラム表では、反時計回りに進むにつれて、命令の優先順位が低くなるのです。

つまり先ほどのプログラムだと、、

「敵機に近付く」>「攻撃する」

という優先順位の問題が発生し、延々と敵に近付くだけのプログラムとなるのです。

というわけで、こんな風にプログラムを修正。

これで、「敵機に近付く」<「攻撃する」という関係に。

つまり、はじめは攻撃ができないので「近づく」という命令に従いますが、近づいたら「攻撃する」という命令を優先し、敵に攻撃をしてくれるようになるのです。

修正してもう一度挑戦。まずは近づいていき、、、

中距離から相手の撃破に成功!

これが「優先順位」の考え方になります。

グマミン
グマミン
ま、まだ簡単だもんね。

条件判断を考える

続いては「条件判断」について学びます。

まず、このアリーナですが、1VS2でピンチの状況。

白いメーターが「シールド」の残量なのですが、、、

ただの打ち合いになりあっけなく敗北してしまいました、、、。

この場合、何が問題なのでしょうか?

ちなみに、シールドは少し時間を置くと徐々に回復します。

さぁ、命令をいじりましょう。

ここでの答えは、
「近づいて攻撃する」→「シールドが壊れたらいったん回復するまで離脱」→「また近づいて攻撃」
を繰り返すことです。

ここで必要なのが、緑のボックス「条件判断」です。

条件判断にはさらにノードをつなげることができるので、「その条件を満たしているときに、つないでいる命令を実行する」ということが可能となります。

グマミン
グマミン
if構文的な感じかな?(かなり適当)

プログラムはこんな感じに。

「もし自機のシールドが0なら」、「敵から離れる」、「シールドが0以上の場合は相手に攻撃」、「相手に接近」
以上の命令を組み合わせて、再度バトルへ。

これはシールドが壊れた状態ですが、すみやかに後ろへ下がるように。

そしてシールドが回復すると、再度接近!

前後へのムーブを繰り返し、撃破に成功しました。

いかがでしたか?自分でプログラムしてみると、なんだか頭がよくなった気がしてくるのが不思議です。

やはりプログラムしたものがすぐに動いて可視化されるので、どこが問題なのかが一目でわかります。

次はもう一段階難しくなっていくらしいので、心してかかりたいと思います。

ではまた!

グマミン
グマミン
できた気になってきたぞ~!

ABOUT ME
ashitaenta
はじめまして。アシタエンタの管理人です。 このサイトは、ゲームや漫画・アニメなどの、 ちょっとニッチな「明日」に向かった エンタメ情報を発信するブログとなっております。 だらだらとゲーム日記を書いておりますので、 肩の力を抜き、ごゆっくりとご覧ください。