マップチップ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
亀猫

マップチップ

#1

投稿記事 by 亀猫 » 16年前

こんばんは。お世話になってます。

マップを作成する時 16x16 でチップにして壁や道を組み合わせて作りました。

しかし、この方法だと int map[480]; と膨大な量になってしまいます。
しかも、どこが壁でどこが→を曲がる道か複雑になってしまいます。

マップの素材は First Seed Material というサイトのものを使っています。

GPGA

Re:マップチップ

#2

投稿記事 by GPGA » 16年前

>int map[480];
2KBもないわけですが、どの辺が膨大なのでしょう?

後、亀猫さんの文章はただの報告で、質問内容が何も書かれていません。

亀猫

Re:マップチップ

#3

投稿記事 by 亀猫 » 16年前

膨大という表現が間違ってました・・・。

横16、縦30で、合計チップ480なので、1 2 3 4 5 6 7 8 9....
17 18 19 20..........
.................480 となって、180チップ目の画像を探すのが面倒です。180チップ目の画像を簡単に見つける方法はありますか?

GPGA

Re:マップチップ

#4

投稿記事 by GPGA » 16年前

画像を探すのが面倒という意味がわかりません。

16x16のマップチップは一つ一つにIDが割り当てられていて
int map[480]というのは、実際の画面に表示するための領域ですよね?

180チップ目の画像はmap[179]で参照できるのでは?

チルチル

Re:マップチップ

#5

投稿記事 by チルチル » 16年前

マップチップがどういう物かよくわからないので
全然違うことを言ってるかもしれませんが

画像を簡単に見つける方法ならとりあえず座標から導き出してはどうでしょうか?

マップに使う画像が固定という前提の話ですが

配列を2次元配列にして同じ数だけ画像ハンドルを格納する配列を用意しておき
LoadDivGraph関数でマップチップのサイズに分割して
マップの要素番号と対応させて描画すれば楽だと思います

もしくはマップの画像を読み込み
DrawRectGraph関数で座標から使う部分を導き出すという事もできると思います

亀猫

Re:マップチップ

#6

投稿記事 by 亀猫 » 16年前

画像を載せていいのかダメなのかわからないので解決したら、消します。
この画像は 16x16で分かれています。 横16 縦30

この画像の一番左から123456789101213141516
17181920212223242526

と480個に分解できるのでその中の[180]番目の画像がマップのどの位置に来るのか一つ一つ数えていかないといけないので、面倒です。
簡単に見つけ出す方法はありますか?あれば教えてください・・・。
説明が下手ですみません。

画像を添付しようとしたのですがファイルの形式・・・がでて張れないのでごめんなさい。

ねこ

Re:マップチップ

#7

投稿記事 by ねこ » 16年前

ん~と、とりあえず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:マップチップ

#8

投稿記事 by 亀猫 » 16年前

解決しました!
返信してくださった方ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る