Game ! Gamer ! Gamest !

レトロゲームを中心にゲームについてアレやコレやと

MSX BASIC ゲームにリトライ機能を付けてみた

プログラミングど素人のオッサンがMSXベーシックでゲームを作ってみたい!と悪戦苦闘する企画です。

以前の配信、そして先日の配信でにゃご (id:nyagbon)さんに作っていただいたプログラムの内容を一通り見ていったわけなんですが、まだまだ理解できない部分も多く勉強が必要だなと。ちなみに以前の配信の内容についてはブログにも書きました。

gamerihabiri.hatenablog.com

そして勉強の参考にさせていただいているにゃごさんのプログラムはこちらで公開して下さっておりまする。

nyagbon.hatenablog.com

さて前回はキャラクターの移動について理解を深めた訳ですが、今回はゲーム終了後にもう一度プレイするかどうかのリトライ機能を追加してみました。

f:id:gamerihabiri:20190711180729j:plain
こちらの1040行〜1080行が追加した部分です。元はGAME OVERE!と表示されてそのまま終わりだったんですが、その後にRETRY(Y/N)という設問を表示させてYキーを押したらゲームが再開、Nキーを押すとそのまま終了するようにしました。

1080行で1050行に飛ぶようにしてるのは、キーが入力されるまで待機させるためです。この処理がないとキー入力を待たずに次々と処理を進めて終わって(1090 END)しまうそうです。

あと1060行でYキーが押されたらゲームを再開するためにプログラムの最初の行に飛ぶようにしてるんですが、最初エラーが出てしまいました。どうやらスプライトのデータを二重に読み込む事になってしまったみたいでデータを読み込む前にRESTOREという一文を入れて解決しました。RESTOREはすでに読み込まれているデータをリセットしてくれる命令だそうです。ちなみにプログラムの最初(10行)に飛ばす代わりにRUNと記述してもゲームを再開できますが、この場合ゲームが完全にリセットされた状態でスタートされるので、まだ未実装ですがハイスコア表示を残したいなんて時にはこちらのやり方でいいみたいです。

さて前回、今回でプログラム内容を一通り見てきたわけなんですが、多少は理解できた部分はあるもののまだまだ勉強が必要だなと。特に当たり判定の記述がチンプンカンプンなので次回はここを重点的に勉強しようかと思っちょります。