スプライト表示用のモジュールは既にあるので、並べて表示するだけです。とりあえずマップデータのレイヤー0を背景、レイヤー1をキャラクタ配置として、各所の初期化部分を書き換えました。
マップデータの読み込みは以下のようになります。
MapData= new CMapData; MapData->File("stage01map.fmf");
そしてマップ表示はこんな感じ。map_chip=255は透明なので表示しません。
for (i=0; i<MapData->GetHeight(); i++) { for (j=0; j<MapData->GetWidth(); j++) { map_chip=MapData->Get(0, j, i); if (map_chip!=255) { g->DrawSprite(spr_no[map_chip], (j*48), (i*48), 0.9f, 0, 0); } } }
ただ、これだと表示されない場所まで描画するので、クリッピングする必要があります。あと画面スクロールにも対応させないとね。
上記の処理で表示する事が出来ました。んーやっぱりブロックのグラフィックが不自然な気がするなぁ…
表示はしたものの、当たり判定が入っていないので、今はゲーム開始直後に下に落ちてゲームオーバーになりますw
そんな訳で、次回は大ざっぱな当たり判定を入れてみます。