前回の ミニダンジョンを作ろう 2 のつづきです。
初心者がチュートリアルを終了し「さあゲームを作ろう」としたとき、どうすればいいか分からなくて戸惑ってしまう話はよく聞きます。
なので当講座では、私がゲームを作ったときと同じ順番で説明しています。
少しずつ積み上げるように作っていく感覚を覚えてもらいたいからです。
それから説明の中で「実行してみよう」の言葉をよく見かけると思います。理由はプログラミングにおいてテストすることはとても重要だからです。
人は習慣で行動します。テストをする習慣を身に付けてください。
変数でマップを切り替えよう
配列にセットした2つのマップを切り替えるための仕組みを作ります。
まず、選択中のマップを管理するための変数を作ります。
変数を追加する をクリックします。

変数名を map_no にします。

下図のように 変数 map_no を 0 にする を入れます。
変数 map には実際のマップデータを入れて、
変数 map_no にはマップ番号を入れることになります。

配列を選択するために 配列の 0 番目の値 を用意します。

タイルマップを 設定する の中に map の 0 番目の値 を入れます。

変数 から map_no を持ってきます。

map の map_no 番目の値 にします。
これで map_no でマップを切り替える仕組みは完成しました。

変数 map_no に 1 をセットして実行してみましょう。
2番目のマップが表示されます。

壁を消す仕組みを作ろう
2番目のマップが表示できた所で、スイッチで壁を消す仕組みを作っていきます。
スイッチには青い玉を使います。
現状、岩の壁があるため下に移動することはできません。

タイルマップ用の当たり判定を持ってきます。

青い玉に変更します。

タイル をタイルマップ列 0 行 0 に設定する を持ってきます。

当たり判定の中に入れます。
空のタイルを location の場所にセットします。
これでプレイヤーと青い玉が当たったとき、青い玉は消えます。

いきなり質問です。
「どうして青い玉を消す必要があるのでしょうか?」
この問に答えられない、または、答えを間違えた人は学習が上手くいってません。
プログラミングする力が身に付いていない、と言えます。
学習と並行して自分で考えたゲームを作るようにしましょう。
学習課題を少し改造するだけでもいいです。とにかく、自分で考えてプログラミングすることが大切です。
質問の答えは「青い玉を消さないと何度も当たり判定が実行されてしまうから」です。
岩の壁を消そう
スイッチの部分はできました。
これからスイッチで岩を消す仕組みを作ります。
プレイヤーの初期配置やコインに差し替える仕組みと同じことをします。
ループのブロックを用意しましょう。

当たり判定の中に入れます。

マップ上のタイルを探すため すべての ◻︎ 位置の配列 を持ってきます。

ループに配置して岩の絵を選択します。

見つけた岩を空のタイルで差し替えます。
値 には岩の情報が入ります。

テストしましょう。
青い玉に当たると岩が消えます。

岩の当たり判定を消そう
岩の表示を消しても、移動することはできません。
マップ作成時に設定した当たり(壁)が残ったままだからです。

タイルマップ列 0 行 0 に壁を設定する オフ を持ってきます。

岩を消すループの中に入れます。
タイルマップ座標に 値 をセットして当たり(壁)を消します。

実行してマップの下まで移動できることを確認しましょう。
この命令で当たり(壁)のON・OFFができます。
ゲームの中で橋を壊すなどの演出をするとき、当たりもONにすれば壊れた橋は通行できなくなります。
3つ目のマップを作ろう
3つ目のマップを作ります。
まず + をクリックして配列の枠を増やします。

変数 map_no に 2 をセットします。
そして3番目のタイルマップのエディタを開きます。

マップサイズを横 20 縦 5 に変更します。

壁・プレイヤーの初期配置・脱出階段を描きましょう。

壁に当たり判定を入れます。

実行してマップが正しく表示されるか確認しましょう。

続きます。