RPGツクールMZ脱出ゲーム(記憶)

光った場所を記憶して同じように光らせるゲームを作ってみました。
光る場所を忘れたり、間違えた場合は鉄格子の鍵の辺りに行くとまた光って教えてくれます。

良かったら遊んでみて下さい。

【記憶ゲームの作り方】
Image

まずマップ1でランダムに5個の数字が入った配列を作って変数ID1に入れてマップ2に飛ばします。

let random = [];

//ランダムな数字を生成し、配列に追加する
for (let i = 0; i < 光らせる回数; i++) {
let randomNum = Math.floor(Math.random() * 光る床の数) + 1;
random.push(randomNum);
}
// 生成された順番を変数に格納する]
$gameVariables.setValue(変数ID, random);

配列の中の数字は重複しても面白いかなと思い、重複を回避する処理をしていません。

Image

マップ2に飛ばしたら鉄格子の鍵イベントを自動実行させます。

// 配列の初期化
$gameVariables.setValue(変数ID, []);

// 1秒毎に配列のイベントIDのセルフスイッチAをONにする
$gameVariables.value(変数ID).forEach((eventID, index) => {
setTimeout(() => {
$gameSelfSwitches.setValue([変数ID, eventID, 'A'], true);
}, index * 1000);
});

変数1に入れた数だけ1秒毎にイベントIDのセルフスイッチAをONにします。

Image

これは床イベントの2ページ目ですがセルフスイッチAがONになると光った後ウェイトをかけてセルフスイッチAをオフにしています。

Image

床イベントの1ページ目はプレイヤーが床を調べた時に発動します。

let playerInput = $gameVariables.value(変数ID);

// 配列に値を追加
playerInput.push(床の番号);

// 配列を変数に保存
$gameVariables.setValue(変数ID, playerInput);

床を調べられたら(決定ボタンを押されたら)床の番号を配列に追加して変数2に保存します。

Image

鉄格子の鍵の所までプレイヤーが来たらスクリプトを実行します。

// 正解の配列とプレイヤーが入力した配列を判定
if ($gameVariables.value(変数ID).toString() == $gameVariables.value(変数ID).toString()) {
$gameSwitches.setValue(スイッチID, true)
} else {
$gameMessage.setSpeakerName("名前")
$gameMessage.setFaceImage("指定したファイル", 番号)
$gameMessage.add("どうやら間違っているようだ")
$gameSelfSwitches.setValue( [マップID,イベントID,"A"], false )
}

正解の場合はスイッチ1をONにして3ページ目に飛ばします、不正解の場合は鉄格子の鍵イベントのセルフスイッチAをOFFにして1ページ目に戻します。

Image

鉄格子上下をスイッチ1で開くようにしてるのでセルフスイッチではなくスイッチを使っています。

これで完成です!

コメント