- 厨房なおいらにプログラム教えるスレ
256 :名前は開発中のものです。[sage]:2011/02/22(火) 00:06:54.21 ID:vXGD/Huf - この場合、白黒画像のBMPファイルと、0/1のテキストファイルの両方は、重複するんないんじゃないかと思いますが、
ここまでの実装をそのようにしてきて、うまく進んでいるのなら、とりあえずそのまま進めるといいと思います。 確認ですが、戦車を処理するときは、GetPixelSoftImage(x,y)ではなく、map[y][x]でアクセスしてるのですか? もしそうだとするなら、着弾地点を中心にmapの配列を書き換え、かつ画面表示も同じようにすれば、 所望の動作をすると思います。
| - 厨房なおいらにプログラム教えるスレ
260 :名前は開発中のものです。[sage]:2011/02/22(火) 00:56:35.31 ID:vXGD/Huf - 配列と画面を円でえぐる処理は、こんな方法はどうでしょうか?
void FillCircle(int Xc,int Yc,int R){ for(int x=-R; x<=R; x++) for(int y=-R;y<=R; y++) if(x*x+y*y<=R*R){ if(Xc+x>=0 && Xc+x<2400 && Yc+y>=0 && Yc<640){ map[Yc+y][Xc+x]= 0; // 地面判定用配列の加工 SetPixel(Xc+x,Yc+y,背景色); // 画面の(Xc+x, Yc+y)のピクセルを抜く処理 } } } SetPixelと書いた部分は適宜実装する必要がありますが、 配列の0/1と画面のピクセル状態がずれる心配はないと思います。 ところで、そもそも背景に地面を重ねる処理にαチャネルを使っているなら、 地面の画像は[640][2400][4] (R,G,B,A/pixel)の配列じゃないでしょうか? map[y][x]の代わりに、groundimage[y][x][3]を参照する方法は使えませんか?
|
|