ページ 1 / 1
マップチップ
Posted: 2009年7月04日(土) 00:52
by 亀猫
こんばんは。お世話になってます。
マップを作成する時 16x16 でチップにして壁や道を組み合わせて作りました。
しかし、この方法だと int map[480]; と膨大な量になってしまいます。
しかも、どこが壁でどこが→を曲がる道か複雑になってしまいます。
マップの素材は First Seed Material というサイトのものを使っています。
Re:マップチップ
Posted: 2009年7月04日(土) 01:10
by GPGA
>int map[480];
2KBもないわけですが、どの辺が膨大なのでしょう?
後、亀猫さんの文章はただの報告で、質問内容が何も書かれていません。
Re:マップチップ
Posted: 2009年7月04日(土) 01:22
by 亀猫
膨大という表現が間違ってました・・・。
横16、縦30で、合計チップ480なので、1 2 3 4 5 6 7 8 9....
17 18 19 20..........
.................480 となって、180チップ目の画像を探すのが面倒です。180チップ目の画像を簡単に見つける方法はありますか?
Re:マップチップ
Posted: 2009年7月04日(土) 01:35
by GPGA
画像を探すのが面倒という意味がわかりません。
16x16のマップチップは一つ一つにIDが割り当てられていて
int map[480]というのは、実際の画面に表示するための領域ですよね?
180チップ目の画像はmap[179]で参照できるのでは?
Re:マップチップ
Posted: 2009年7月04日(土) 01:39
by チルチル
マップチップがどういう物かよくわからないので
全然違うことを言ってるかもしれませんが
画像を簡単に見つける方法ならとりあえず座標から導き出してはどうでしょうか?
マップに使う画像が固定という前提の話ですが
配列を2次元配列にして同じ数だけ画像ハンドルを格納する配列を用意しておき
LoadDivGraph関数でマップチップのサイズに分割して
マップの要素番号と対応させて描画すれば楽だと思います
もしくはマップの画像を読み込み
DrawRectGraph関数で座標から使う部分を導き出すという事もできると思います
Re:マップチップ
Posted: 2009年7月04日(土) 02:38
by 亀猫
画像を載せていいのかダメなのかわからないので解決したら、消します。
この画像は 16x16で分かれています。 横16 縦30
この画像の一番左から123456789101213141516
17181920212223242526
略
と480個に分解できるのでその中の[180]番目の画像がマップのどの位置に来るのか一つ一つ数えていかないといけないので、面倒です。
簡単に見つけ出す方法はありますか?あれば教えてください・・・。
説明が下手ですみません。
画像を添付しようとしたのですがファイルの形式・・・がでて張れないのでごめんなさい。
Re:マップチップ
Posted: 2009年7月04日(土) 08:43
by ねこ
ん~と、とりあえず640x480の画像を16x30サイズで「横30x縦16」の480個取得している状態ですよね?
恐らく「LoadDivGraph」関数で。
そして、それに対応したマップの画像も二次元配列でなく、一次元配列の「int map[480];」で管理していると予測します。
その場合横30、縦16の分割なので以下のような方法でx,y座標が求められます。
int idx = 180
int x = (int)(idx % 30) * 32;
int y = (int)(idx / 30) * 16;
こういうのが知りたかったんじゃないでしょうか?違ってたらすいません。
Re:マップチップ
Posted: 2009年7月04日(土) 12:10
by 亀猫
解決しました!
返信してくださった方ありがとうございます。