“RUN” それは魔法の言葉

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

205.HSPでゲームを作ろう:標準スプライトのマップ表示を使ってアクションゲームを作る その3

次はマップのスクロール。
マップのスクロールは、es_putbg命令で、マップを表示するXY座標を動的に変えることで実現できる。
coro3.hatenablog.jp

今回はオートスクロールする中で、上に登っていくようなゲームデザインにしたい。

表示するマップは、縦長の物になる。以前作っていたテストプログラムだと、マップの初期表示座標は (0,0) でよかったが、今回はマップの一番下から上に向かってスクロールするため、少なくともY座標は、最下部+画面に表示するマップのY座標にしなくてはならない。

マップの表示領域を20×20チップ、Y方向のマップを300チップ分と定義した。
あとは算数です。1チップのYサイズは40ドット。画面内には常に20チップを表示するので、281チップ目から表示するのが最下段。最初のチップはY=0から始まるので、Y座標は、281×40-40=11,200ドット目からになる。
これを変数にセットしておき、値を減算していけば、上に向かってスクロールするマップ表示ができる。

スタート地点(最下段)の表示

徐々にスクロールすると…

スクロールは、例によって、ゲーム内のカウンタを使って処理することにした。
いきなりスクロールし始めたら、ゲームにならないので、1000フレーム経過するまではスクロールさせないように。
そして、毎フレームスクロールさせると早すぎるので、3フレームごとに1ドットずつスクロールさせるようにしてみた。
この設定は仮なので、今後ゲームの難易度調整の時に変更していく。

sy=11200
*main
redraw 0
  es_putbg 0,0,0,0,sy; マップを描画
  if gamecnt\3=0 and gamecnt>1000 {
    sy=sy-1
  }
redraw 1
await 16
gamecnt++

goto *main