初代 PC-8801 の N88-BASIC で作成した、プログラミング覚えたての頃のショボイゲームを、そのまま HSP で移植して再現してみようじゃないか!というプロジェクト。
前回までで仮の移動処理が出来上がったメインプログラム。今回はより完成に近づけるため、壁などの衝突判定と各マップパーツのイベント判定を付け加えていきます。
最終段階ではかなりゲームらしくなりますよ♪ それでは始めていきましょうか~!
マップイベント処理用スクリプト作成
タイルマップエディタ「Tiled」で作成したマップファイルでは、オブジェクトレイヤーを作ってイベントが発生する場所にオブジェクトを配置しています。
そのオブジェクトと同じ座標に主人公が移動した時、オブジェクト名に含まれているイベント番号から判断して、当てはまるイベントを実行させます。
ちなみに上のイベント設定は少しずつ進化させているので、徐々に複雑なことをできるようにしていく予定ですが、それはいつになるかな~😅
宝箱イベント
そんな独自のイベントスクリプトを利用して作成した処理の1つが、RPGには欠かせない宝箱ゲットのイベント。
PC-88版では宝箱の上に乗ることで手に入れることができたのですが、HSP移植版では横から触れることで手に入れられるようにしました。
上写真の宝箱は、1つ前のスクリプト画像で EVT(000)=”@TB7″ となっているところ。
@TB が宝箱イベントの目印で、その後ろの 7はアイテム番号としました。7に「カギ」が割り当てられているので、「カギヲ テニイレタ!!」となるわけですね♪
宝箱をゲットした直後にフラグを立て、何度も取れないようにして処理終了です。
扉の判定ではカギの有無をチェック
次はカギを持っていないと開けることができない、扉のイベント処理を作成!
スクリプトで “@DO” となっているのが扉イベントになります。
ちなみに扉の処理はこんな感じ。持っているカギの数がゼロだったら「カギヲ モッテイマセン。」と出力して脱出しています。
なお、if 文の条件に書かれているもう一つの条件 IN(1)=0 とは、何度でも扉を開けることができるアイテム「マジカルキー」を持っているかどうかのフラグです。
開けることができた場合はフラグを立て、サブルーチンの *door1 内でカギの所持数をマイナスしたりメッセージを表示したりなどの後処理をしています。
会話メッセージの表示処理
どんどんいきましょう。次は RPGなどではおなじみの 1文字ずつメッセージを表示させていく処理。
スクリプトでは “@MS” が目印となっていて、メッセージに挟まれている @r はキー入力待ちを行う部分となります。画面上では ▼ を表示して入力待ち状態になります。
HSPで書いた表示処理のサブルーチンがこちら。キー入力待ちの目印「@r」単位で文字列を区切って配列へ入れ、1文字ずつ表示する処理を繰り返します。
現段階では 1行出力後にキー入力待ちへ突入するようになっています。いずれはこれを複数行出力対応に変えていく予定ですが、PC-88版そのままの移植なので今はこれでOK♪
回復の泉&ボス戦イベント
次に作るのは回復の泉判定。こちらの処理はシンプルで、触れると変数HPの値を最大HPの数値にセットするだけ。
あとはメッセージを表示させてステータス表示を更新させれば終了です。
1階から 2階へ移動する階段の手前には、このフロアのボスが隠れています。
写真の位置に主人公が到着するとボス戦へ突入するのですが、その判定処理も作りましたよ。
まだバトル部分のプログラムが無いので、目印のメッセージ表示しかありませんが。
倒すことができたらフラグを立てて処理終了となるようにする予定です。
階段でのフロア移動処理
今回作成する最後の処理は、上り階段・下り階段でのフロア移動処理。
このゲームのフロア移動は、座標が変化することなく上下フロアに移動するだけなので、処理を書くこと自体は難しくなかったです。
@UP と @DW が階段で、それぞれの後ろに付けている数字が移動先フロア番号。
地上5階・地下2階の構成で、地下1階が 6、地下2階が 7としているため、その移動に対応させるべく上記のような方法にしました。
BASIC で長くダラダラと書いていたこれらのイベント処理。今回のHSP版ではかなりスッキリ短くなりました~♪
現段階の動作を動画で
今回作った部分を短い動画でアップしたので、ちらっと再生してみてくださいね♪
バトルが無いだけで、普通に宝箱を取ったり扉を開けたりできています。
かなりいい感じに仕上がってきているので、この勢いで全てのイベントを作っていきたいところですが、今回はここで終了しておきます。
次でどこまで作ることができるのか!?どうぞお楽しみに♪
ポチッと応援してもらえたら嬉しいな♪
コメント