アドベンチャー/RPGのゲームシステムに、イベント内戦闘処理を組み込んでみます。

イベントスクリプトにbattle()コマンドを追加し、イベントスクリプトから戦闘を起こせるようにしましょう。ボス戦のほか、マップ上のエンカウントによる通常戦闘も、マップパーツに「ランダムで戦闘が発生するイベント」を配置する形で実現することができそうです。

戦闘処理自体は、メッセージ表示など他のイベントと同様の流れです。イベント処理コードを戦闘処理中にして、戦闘処理関数battle()内部で、戦闘処理の表示用に用意したメッセージウインドウや選択ダイアログの処理を行う形になっています。

ただ、選択ダイアログとメッセージ表示ウインドウを同時に表示すると、選択やメッセージを進める決定キーの扱いがちょっと面倒ではありますね。決定キーが離される、押されるといった状態を考えながら「イベント状態の設定」を行わないと、戦闘のコマンド選択をした瞬間に戦闘処理の表示が終わってしまったり、戦闘の後のイベント処理がおかしくなってしまうわけで。

実行画面(下の開始ボタンで開始。Canvas対応Webブラウザが必要です)

ソース(JavaScript、UTF-8)

建物内の左側の人物に話かけると、イベントで戦闘が発生します。処理の流れを確認したら、退避を選択し戦闘を終了してください。


創作プログラミングの街 > ゲーム開発室 > Webゲーム開発室