“RUN” それは魔法の言葉

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

162.HSPでゲームを作ろう:技術研究 標準スプライトのマップ表示を使ってみる その1

培養臼Exの作成は、いったん横に置いて、新作のための技術研究に戻ることにした。
標準スプライトのマップ表示機能を使ってみる。
RPGのフィールド画面のようにマップを構成するチップを敷き詰めて、それを表示できるようにするための機能(と解釈)。

地面や水、山など地形ごとにデザインしたチップの画像を用意する。例えばこんな感じ。

これをcelload命令で、バッファに読み込んでおく。
チップのサイズをceldiv命令で定義しておくのは、スプライトを定義するのと同じ。

マップに何を配置するかは、あらかじめ1次元配列にチップのID(celdivで区切られた左上から順にIDを振られる)を代入しておく。2次元配列じゃなくていいのは結構楽かも。
実際の定義と表示には、es_bgmap命令、es_putbg命令を使う。
ここでちょっと引っかかった。これらの命令は、標準スプライト機能を使うときのおまじない、es_ini命令の後じゃないとエラーで動かない。

閑話休題
es_bgmapで定義した後は、いつもの通り、redraw 0~redraw 1 の間でes_putbg命令を実行すればいい。
こいつは、便利なんだけど、説明がややこしくて何だこりゃってなりかけたw

es_putbg p1,p2,p3,p4,p5

p1=BGNo.(0~15)
p2(0)=表示開始X座標
p3(0)=表示開始Y座標
p4(0)=表示開始マップX位置
p5(0)=表示開始マップY位置

これがes_putbgのヘルプなのだが、2組の座標を指定できる。
p2,p3はウィンドウ内のX,Y座標で、自ウィンドウ内の、どのX,Y座標からマップを表示するかを指定する。
画面の真ん中にマップ、空いた部分にステータスを表示する場合などに使える。
p4,p5は、文面から、チップ単位のX,Yになると思っていたら、単位がドットだった。
ただし、マップの左上が起点。純粋なウィンドウのXY座標じゃない。ややこしいけど、この命令がすごく役に立つ。