CHaser解説(Blockly編)

第2部 チュートリアル

6章 探査した情報で行動を決める

⚠️ ネタバレ注意

各ステージの「解答例」は折りたたんであります。自分の力で挑戦してから開いてください。

6章 探査した情報で行動を決める

4-1 遠方情報で行動を決めよう

課題:一直線に遠くまで探査した情報をもとに、進む方向を決めるプログラムを作ろう。「探査したいちばん遠いマスにアイテムがあれば右へ、なければ左へ進み続けたい」。

ステージ4-1のマップとクリア条件

ステージ4-1のマップ
ステージ4-1のマップ
クリア条件 内容
アイテム 1個ゲットする
ブロック数 20個以下
ターン数 100ターン以内

黄色の枠が自分(Cool)のスタート位置です。すべての条件を同時に満たすとクリアです。アイテムの位置は毎回変わります(マップの半透明の表示は、出現位置の候補です)。

💡 考えるヒント

  • 5章で学んだ遠方探査(search)ブロックの結果は、1番目(隣)から9番目(いちばん遠い)まで番号が付いていました。このステージでは、アイテムは上下左右のいちばん遠いところに置かれますが、「いちばん遠い」といっても、上下は8マス先、左右は7マス先です(9マス先はフィールドの外です)。何番目を調べればよいでしょうか。
  • 「もし〜なら、そうでなければ」ブロック(4章)と組み合わせて、条件によって進む方向を変えます。
  • 「動きながら考える」のではなく「先に一度だけ見渡してから、方針を決めて進み続ける」構成にできないか考えてみましょう。

まずは自分で遠方探査と条件分岐を組み合わせて、挑戦してみましょう。


解答例

解答例を見る
4-1 遠方情報で行動を決めよう
4-1 遠方情報で行動を決めよう

図のプログラムは、番号の使い方を練習するための例です。「右方向に遠方探査する」ブロックで得た情報の9番目(いちばん遠いマス)がItemかどうかを「もし〜なら」ブロックで判定し、条件に応じて「ずっと右へ移動」または「ずっと左へ移動」を実行します。

ただし、これはステージ4-1の答えそのものではありません。 実機のステージ4-1では、アイテムは上下左右のいちばん遠いところに、毎回どれか1か所だけ置かれます。しかも、いちばん遠いといっても、上下は8マス先(8番目)、左右は7マス先(7番目)で、9番目はフィールドの外です。そのため、上・下・左…と順に遠方探査して、アイテムが見つかった方向へ進み続ける形にします(答えは付録2の4-1です)。

このステージのポイントは、「動きながら考える」のではなく「考えてから動く」構成になっていることです。最初に一度だけ遠方探査で遠くまで見渡し、その結果に応じて進む方向を決めたら、あとはその方向へ迷わず進み続けます。行き当たりばったりに動くよりも、先に情報を集めてから方針を決めるほうが、無駄のない動きになる場面があるということを、このステージで体感できます。

4-2 情報をまとめて活用しよう

課題:探査した9マスの中に、アイテムが(何番目でもよいので)1つでも含まれているかどうかで、進む方向を決めよう。

ステージ4-2のマップとクリア条件

ステージ4-2のマップ
ステージ4-2のマップ
クリア条件 内容
アイテム 1個ゲットする
ブロック数 実質、制限なし
ターン数 100ターン以内

黄色の枠が自分(Cool)のスタート位置です。すべての条件を同時に満たすとクリアです。アイテムの位置は毎回変わります(マップの半透明の表示は、出現位置の候補です)。

💡 考えるヒント

  • 4-1では「8番目(7番目)かどうか」という1点だけを調べました。今度は「9マスのどこかに」という調べ方が必要です。
  • ツールボックスに、リスト〔 〕で以下のアイテムの最初の出現箇所を検索:〔 〕という長いブロックが用意されています。これは「そのリストの中で、指定したものが何番目に最初に出てくるか」を教えてくれるブロックです。
  • そのブロックといっしょに、=の比較ブロックと数字の0ブロックも用意されています。この3つをどう組み合わせれば「どこかにある/どこにもない」を判定できるでしょうか。
  • 1マスずつ「1番目はItemか、2番目はItemか…」と条件を9個も並べる必要はありません。

自分なりの方法で「含まれているか」を判定してみましょう。


解答例

解答例を見る
4-2 情報をまとめて活用しよう
4-2 情報をまとめて活用しよう

「最初の出現箇所を検索」ブロックの結果を、> 0(0より大きい)と比べているのがポイントです。このブロックは、探したものが見つかればその位置を1から数えた番号(隣のマスが1、いちばん遠いマスが9)で返し、どこにも見つからなければ0を返します。つまり「結果が0より大きい」は、そのまま「9マスのどこかにアイテムがあった」という意味になります。

条件が成り立てば「ずっと右へ移動」、成り立たなければ「ずっと左へ移動」を実行します。

番号の数え方:5章で学んだ「遠方情報の〇番目のマス」も、この「最初の出現箇所を検索」ブロックも、どちらも1から数えます(1が隣、9がいちばん遠い)。「見つからなかった」は、どの番号とも重ならないように0で表します。> 0は「見つかった」という決まり文句として覚えてしまうのが早道です。

位置を指定せずに探す利点

4-1では「8番目」「7番目」というピンポイントの位置を指定していました。しかし実際の対戦では、アイテムがちょうどその位置にあるとは限りません。3マス目にあるかもしれないし、5マス目にあるかもしれません。「9マスのどこかにアイテムがあれば」という調べ方をすれば、アイテムがどの位置にあっても見つけられるようになります。1つ1つの位置を指定して確認するよりも、まとめて「あるか・ないか」を聞くほうが、実戦ではずっと使い勝手のよい判断になります。

複数の条件を組み合わせる:かつ・または

次の4-4に進む前に、条件の組み立てに使う道具をもう1つ増やしておきましょう。

4章では「もし〜なら」ブロックの条件に、判定部品を1つだけはめ込んでいました。しかし「左上がブロックで、かつ右上もブロック」のように、2つの条件が同時に成り立つかどうかを調べたい場面もあります。

このようなときに使うのが、ツールボックスに用意されている「〜かつ〜」という論理演算ブロックです。このブロックには左右2つのくぼみがあり、そこに判定部品を1つずつはめ込むと、2つの条件をまとめて1つの条件として扱えるようになります。真ん中のドロップダウンで「かつ」と「または」を切り替えられます。ステージ4-4のツールボックスには、このブロックと、条件を反対にする「〜ではない」ブロックが並んでいます。

選択肢 意味 成り立つとき
かつ 両方とも満たす 左の条件と右の条件が、どちらも成り立つとき
または どちらか一方でも満たす 左と右の少なくとも一方が成り立つとき

「両脇がふさがれていて危険」を判定したいなら、片方だけふさがっていても危険ではないので「かつ」を選びます。逆に「上か下のどちらかにアイテムがあれば動く」なら「または」です。日本語で条件を声に出してみて、「〜も〜も」なら「かつ」、「〜か〜か」なら「または」と考えると選び間違えにくくなります。

4-4 自縛を回避しよう

課題:アイテムを取りに行った結果、自分の周りをブロックで挟まれてしまう「自縛」を避けよう。

ステージ4-4のマップとクリア条件

ステージ4-4のマップ
ステージ4-4のマップ
クリア条件 内容
アイテム 7個ゲットする
ブロック数 16個以下
ターン数 20ターン以内

黄色の枠が自分(Cool)のスタート位置です。すべての条件を同時に満たすとクリアです。

第1部4章で学んだ「アイテムを取ると、その場所にブロックが出現する」というルールを思い出してください。アイテムを取りに行った結果、自分の周りが両側からブロックで挟まれてしまうことがあります。

💡 考えるヒント

  • 「取れるアイテムは全部取る」だけでは危険な場合があります。取りに行く前に、取った後の状況を先読みできないか考えてみましょう。
  • 5章で学んだ近隣探査(look)ブロックは、まだ移動していない先のマスの様子を覗き見できました。これをどう使えば、「進んだ後に挟まれないか」を事前に確認できるでしょうか。
  • 手順を分解すると、次のような形になります。①アイテムの方向を確認する ②その方向へ進んだ場合、両脇がブロックになっていないか確認する ③危険なら別の方向を選ぶ。
  • ②の「両脇とも」は、直前に学んだ「かつ」の論理演算ブロックで表せます。

このステージは、これまでのステージのように「1つの決まった形」に収まる課題ではありません。まずは自分なりの判定方法を考えて組んでみましょう。

4-4 自縛を回避しよう(危険な状況の例)
4-4 自縛を回避しよう(危険な状況の例)

解答例

解答例を見る

Blocklyでの解答例は、付録2「チュートリアル解答例集」の4-4に掲載しています。上のヒントの手順(①アイテムの方向を確認 ②その方向へ進んだ場合に両脇がブロックにならないか確認 ③危険なら別方向)が、「もし〜なら」の入れ子と「かつ」の論理演算ブロックでそのまま形になっているので、自分の組んだブロックと見比べてみてください。

演習問題

  1. 4-1のプログラムで、もし上方向のアイテムが8マス先ではなく5マス先にあった場合、期待どおりに動くでしょうか。理由も考えてみましょう。
  2. 4-4について、「上にアイテムがあり、その両脇がブロック」以外にも自縛が起こりうる状況を1つ考え、どう対処すればよいか書き出してみましょう。

付録2への案内:5章・6章に対応するステージ4は全6課題あります。本文で扱った4-1・4-2・4-4に加えて、4-3「自分の位置を確かめよう」、4-5「斜め方向をlookで見つけよう」、4-6「近くはlook、遠くはsearch」の解答例を、付録2「ステージ4 探査(look・search)の活用」に掲載しています。とくに4-6は、2種類の探査を目的に応じて使い分ける集大成の課題なので、本章の締めくくりとして目を通しておくとよいでしょう。

YouTubeチャンネル

U-15プロコン舞鶴のYouTubeチャンネルを開設しました。大会の情報などを発信しています。 チャンネルを見る