7章 ターンの仕組みと get_ready
これまでのステージは、自分1人だけが動くステージでした。しかし本番の対戦では、CoolとHotの2人のプレイヤーが、同じフィールドの上で交互に動きます。この章では、「自分の番が来るのを待つ」という、対戦ならではの重要な考え方を学びます。
ターンの仕組み
先に、対戦の仕組みそのものを確認しておきましょう。
上の図は、CoolとHotそれぞれのプログラムが、どのように交互に実行されるかを表しています。CoolとHotは、それぞれ自分専用のプログラムを持っていますが、実際にフィールドの上で1手ずつ動けるのは、自分の番が来たときだけです。図のように、Cool→Hot→Cool→Hot…と、1手ずつ交互に進んでいくのがCHaserの対戦の基本です。
5-1 自分のターンを待って行動しよう(get_ready)
課題:自分の番が来るまで待ってから、行動するプログラムを作ろう。
ステージ5-1のマップとクリア条件
| クリア条件 | 内容 |
|---|---|
| アイテム | 1個ゲットする |
| ブロック数 | 6個以下 |
| ターン数 | 100ターン以内 |
| 相手 | CPU(レベル1)がいる |
黄色の枠が自分(Cool)のスタート位置です。すべての条件を同時に満たすとクリアです。
💡 考えるヒント
- 図をよく見ると、CoolとHotのどちらのプログラムにも、行動の前に必ず入っているブロックがあります。それは何をするためのブロックでしょうか。
- このブロックには「待つ」以外にも、もう1つ大事な役割があります。3章で学んだ「周辺情報を取得する」ブロックと似た働きをしていないか、比べてみましょう。
- 「ずっと繰り返す」ブロックの中の、どの位置にこのブロックを置くべきか考えてみましょう(繰り返しの外に1回だけ置く場合と、中に毎回入れる場合とで、動きにどんな違いが出るでしょうか)。
まずはツールボックスから、この役割を持つブロックを探して組んでみましょう。
解答例
解答例を見る
「自分のターンを待つ」ブロックが、この役割を持つブロックです。実行すると、プログラムは自分の番が来るまでそこで待機し、自分の番になった瞬間に、そのときの最新の周辺情報を受け取ります。つまり、このブロックは「待つ」と「最新情報を取得する」という2つの役割を同時に果たしています。「ずっと繰り返す」ブロックの中、判断の直前にこのブロックを置くことで、毎ターン自分の番を待ち、最新の情報を受け取ってから動く、という基本の形になります。
「待つ」ことの意味
もし「自分のターンを待つ」ブロックがなく、自分のプログラムだけがどんどん先に進んでしまったらどうなるでしょうか。相手がまだ1手も動いていないのに、自分だけ5手も6手も先読みしたつもりで動いてしまい、実際のフィールドの状況とズレた判断をしてしまいます。「自分のターンを待つ」ブロックを毎回の判断の前に置くことで、「今、本当に自分の番が来た、この情報は最新のものだ」という保証を得てから動けるようになります。3章で触れた「情報が古くなる」問題も、この「自分のターンを待つ」ブロックを判断のたびに置くことで防ぐことができます。
注意したいこと
- 「自分のターンを待つ」を繰り返しの外に1回だけ置いてしまう:「ずっと繰り返す」ブロックの外側に1回だけ置くと、最初の1回しか自分の番を待たず、2回目以降は情報を取得し直さないまま動き続けてしまいます。毎ターン判断する場合は、繰り返しの中、判断の直前に置く必要があります。
- 自分のターンだと思い込んで、待たずに動こうとする:「自分のターンを待つ」を挟まずに移動ブロックを実行すると、意図したタイミングで動いてくれない、あるいはエラーになることがあります。行動する前には必ず自分の番を待つ、というルールを徹底しましょう。
- 待っている間に状況が大きく変わることを忘れる:自分が待っている間に、相手は自由に動いたりブロックを置いたりしています。「自分のターンを待つ」で受け取った情報は、あくまで「たった今の」状況です。次の自分の番までにまた状況が変わる可能性を頭に入れておきましょう。
演習問題
- 「ずっと繰り返す」ブロックの中に「自分のターンを待つ」を入れる場合と、繰り返しの外に1回だけ置く場合とで、動きにどんな違いが出るか説明してみましょう。
- 図の「ターンの仕組み」を見て、Coolが3手動く間にHotは何手動くか答えてみましょう。
付録2への案内:ステージ5は全5課題あります。本文で扱った5-1に加えて、5-2「自分の番を待ってみよう2」、5-3「たくさんアイテムをゲットしよう」、5-4「CPUとアイテムを取り合おう」、5-5「番を待ちつつ遠くを探そう」の解答例を、付録2「ステージ5 ターンの仕組み」に掲載しています。5-4は本書で初めて「対戦相手が同時に動く」課題なので、実戦に近い感覚をつかむのに向いています。
ここから先のステージでは、この「自分のターンを待つ」ブロックを、判断の直前に置くことが基本の形になります。次の章では、いよいよ相手にブロックを設置して勝負を決めるステージに挑戦します。