厨房なおいらにプログラム教えるスレ
■ このスレッドは過去ログ倉庫に格納されています
00011
02/05/28 20:36ID:pts0IQX6厨房に分かる程度優しく教えてくれた方にはお礼をイイマス
0249社内ニート ◆OpY5DDvqSw
2011/02/21(月) 21:44:08.08ID:3YAa7u9wまず、地形画像(地形.bmp)と、それと同じ形の白黒画像(地形_a.bmp)を用意します。
白黒画像をアルファチャンネルとして、地形画像の何も無いところを透明にします。
さらに、白黒画像と同じ形の二次元配列を別に用意して、それで当たり判定を行います。
この配列内に直接円形の変化をつけたいんです。
[0000000111110000000]
[0000011111111100000]
[0000111111111110000]
[0000111111111110000]
[0000011111111100000]
[0000000111110000000]
[0000000000000000000]
こんな感じ。
0250社内ニート ◆OpY5DDvqSw
2011/02/21(月) 21:57:39.46ID:3YAa7u9w結論だけいいます。
白黒BMPファイルを当たり判定に利用したいので
BMPファイルなどについて質問させてください。
当たり判定用に、画像と別に2次元配列を用意するのは中止します。
0251社内ニート ◆OpY5DDvqSw
2011/02/21(月) 22:13:55.56ID:3YAa7u9w1.ファイルヘッダ
2.情報ヘッダ
3.ビットフィールド
4.カラーパレット
5.イメージデータ
というものの集まりだということはわかりました。
そして、5.イメージデータっていうのが2次元配列になってるんだろうってこともわかりました。
ここまで合ってますか?
そして、イメージデータに、 『map[640][2400]』 みたいなハンドルをつけてしまえば、
BMPファイル内のイメージデータを当たり判定用の配列としてそのまま利用できるんじゃないかと。
>>201のやってることってそういうことですか?DXライブラリじゃない書き方なんでいまいちわかりませんでした。
0252社内ニート ◆OpY5DDvqSw
2011/02/21(月) 22:28:33.49ID:3YAa7u9w0253社内ニート ◆OpY5DDvqSw
2011/02/21(月) 22:29:14.08ID:3YAa7u9w0254名前は開発中のものです。
2011/02/21(月) 22:57:16.81ID:N0QjpwZiそれによってカラーパレットがあったり、なかったりします。
本題のイメージデータですが、やはり種類ごとに格納形式が違います。
この部分を2次元配列に直接読み込んで使おうとするなら、
256色無圧縮のファイルであることを前提に、配列はchar型で確保しておくことになります。
メモリの使用量を考えると非効率的なので、あれこれ検討していくと、
>>201の方式を含めて、なんらかの方法で2次元配列を用意することになるんじゃないかと思います。
ちなみに現時点で戦車の傾きを求めるとき、ピクセルの有無の参照には何を使っていますか?
0255社内ニート ◆OpY5DDvqSw
2011/02/21(月) 23:44:32.25ID:3YAa7u9wピクセル有無の判定のために、
白黒画像とは別に用意した、2次元配列を使っています。
この配列は、
GetPixelSoftImage で、白黒画像のピクセルを一つずつ調べて、
黒なら 0、白なら 1、といった風に、fprintf でファイルに書き出していきます。
そうやって作っておいた0と1のテキストファイルを
ゲーム開始時にマップデータとして読み込んでいます。
ファイルに書き出したりしないで、
GetPixelSoftImage で、ピクセルが白か黒か調べて、いきなり配列 『map[640][2400]』 に、0と1を入れていってもよかったんですけど。
0256名前は開発中のものです。
2011/02/22(火) 00:06:54.21ID:vXGD/Hufここまでの実装をそのようにしてきて、うまく進んでいるのなら、とりあえずそのまま進めるといいと思います。
確認ですが、戦車を処理するときは、GetPixelSoftImage(x,y)ではなく、map[y][x]でアクセスしてるのですか?
もしそうだとするなら、着弾地点を中心にmapの配列を書き換え、かつ画面表示も同じようにすれば、
所望の動作をすると思います。
0257社内ニート ◆OpY5DDvqSw
2011/02/22(火) 00:21:48.52ID:s/YhWNAtそう思ったんですが、
白黒BMPにDrawCircleの塗りつぶしで描いた円と、
配列内に0と1で描いた円が、1ドットでもずれていたら、
何も見えないところに地形が存在したり、
見えている地形を突き抜けてしまったりということがおきると思いますし、
どうやって配列内に円形の変化をつけるかっていうところも、シンプルにまとまった方法が思い浮かばないので。
0258社内ニート ◆OpY5DDvqSw
2011/02/22(火) 00:27:20.13ID:s/YhWNAt戦車を処理するときはmap[y][x]を使っています。
0259社内ニート ◆OpY5DDvqSw
2011/02/22(火) 00:38:03.69ID:s/YhWNAt画面表示とmapの配列を同じように行うのが一番簡単な方法なんですけどねぇ。
できれば、
アルファチャンネル用の白黒画像と、
map[y][x]を連動させるって言うか、
白黒画像そのものがmap[y][x]、
みたいなやり方にしたい。
ゲームの土台になる部分は、ちゃんとしたものにしたいんです。
タンクの画像とか演出は多少陳腐でもでもかまわないけれど。
■ このスレッドは過去ログ倉庫に格納されています