ワンポイントテクニック No.029 G800シリーズ対応

ゲームに一時停止を導入する


 ポケコンゲームにおいて1回のプレイ時間が数分〜数10分になるものであれば一時停止(ポーズ)の導入することで利便性が上がります(逆に1回のプレイ時間が極端に短いものはこれをゲームオーバー画面で一時停止することでリプレイとして活用可能)。手軽なポケコンゲームだからこそ手軽に中断したいですからね。BREAKキーで一時停止をしてCONTで再開するという方法も無くはないですがゲームにおいてはCONTではまともに再開できないためポーズ専用ルーチンをゲーム内に導入するのがベストでしょう。

 さて、ポーズの導入方法においては最も簡単なのはWAITと組み合わせるものです。PRINTやGPRINTはWAIT(引数なし)と指定することで表示待ち時間が無限大になるためそれをポーズに使おうというわけです。
 下記リストを適当な行に入れポーズを行う場合はメインルーチンからGOSUB *PAUSEを行えばポーズが可能になります。ポーズ解除は[RETURN]キーです。

 *PAUSE WAIT :GPRINT :WAIT 0:RETURN

ポーズ状態であることが画面を見て分かるようにしたいという場合は下記のようにするのが最も簡単です。

 *PAUSE WAIT :LOCATE 0,0:PRINT "PAUSE":WAIT 0:LOCATE ,0:PRINT "     ":RETURN

 ただし、PAUSEの文字を表示する場所はそのゲームに適した場所に変える必要があるかもしれません。

 このポーズ機能は簡単というだけではなくそのままの状態でオートパワーオフや電源OFFもできるというメリットがあります。ポーズ機能ルーチンはポーズ解除をするキーが押されるまで無限ループを繰り返すという処理を行えばいいだけの簡単なものですがWAIT命令を使えばそんなことをわざわざ考える必要もなくなるのです。
 ただし、ポーズのためにメインルーチンにIF文を1つ増やすというのも速度重視のアクション系のゲームの場合には気になるかもしれません。その場合はGOTOのテーブル処理によってキー判定を行えば問題ありません。私が過去に作ったポーズ機能を有するアクション系のゲームのほとんどがそのような方法によってタイムロスなしでポーズ機能を導入しています。

 また、シミュレーションやRPGのコマンド入力待ち状態でわざわざポーズ機能をするまでもないけどずっと付けっぱなしだと電池の消費が気になるという場合はINKEY$の省電力モードを使用するとよいでしょう。こちらも放っておけばオートパワーオフが効くので大変便利です。


RETURN

inserted by FC2 system