“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

142.HSPでゲームを作ろう:培養臼(BAIOUS) その19

ゲームの大枠がほぼ出来上がったので、テストプレイをして難易度や、各ステージの設定を変更する作業を行った。
大体長くて1ステージ5分弱。それが全11ステージ+ボーナスステージなので、そこそこのプレイ時間を強いられる。
そこで、休憩ができないことに気づく。ポーズ機能を作ろう。

で、このブログを見ている方だけのお知らせです。スタートボタン(ボタン10)かTABキーで、ポーズできます。
って、誰が見てるのかw

さて本題。いざ実装を始めると、単純ではなかった。

ポーズするボタンを押したら、ゲームのメインループの中でフラグを設定して、自機の移動やショットの処理を実行しないようにすればよいかと思ったけど、ここまで楽をしたことが面倒なことになった…

それは、細胞スプライトの自動移動と、アニメーション。

どっちも一時停止する方法が分からない…*1
また、BGMも一時停止できない。ここは割り切って、ポーズしたら停止して、再開するときに再生し直すことにした。

で、問題のスプライト関連。ポーズボタンを押したら、サブルーチンに飛ばして、もう一度ポーズボタンを押すまで、while~wendの無限ループにすることで解決したw
これで休憩しながら、テストプレイすることができた。

*pause
  ;ポーズ処理
  mmstop  
  pauseflg=0
  mmplay SE_PAUSE

  while pauseflg=0
    JStick key,,,1
    if (key&1024) or (key&1048576) : pauseflg=1
  wend

  if soundflg=1 : mmplay bgmno
  mmplay SE_PAUSE

  return

*1:のちに、es_drawで処理保留フラグを設定すれば、停止できることは分かったので作り直した