C++で複数の同じ敵をつくる場合の画像の管理について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AliceCoder
記事: 51
登録日時: 11年前

C++で複数の同じ敵をつくる場合の画像の管理について

#1

投稿記事 by AliceCoder » 11年前

環境 windows7 64bit
VC++2010

どうも、お世話になっております
今回の質問は、複数体の同じ種類の敵を出現させるとします
同じ種類の敵なので画像は同じものを使用しております
インスタンスごとに画像をメモリに割り当てたら無駄だと思うのですが
どのように画像を扱えばいいのでしょうか
staticでやるという考えがありましたが、解放ができないっぽいので適切な処理ではないと思っている
詳しくstatic理解していないけど、自分はstaticを、使えるスコープを限定したグローバル変数と覚えているため、このように思いました

画像の実体をどこにおくかというのが問題だと思うのですが
なにか王道てきな処理があると自分では思うのですが、どなたかおしえてください

jay
記事: 314
登録日時: 13年前
住所: 大阪市
連絡を取る:

Re: C++で複数の同じ敵をつくる場合の画像の管理について

#2

投稿記事 by jay » 11年前

なんかstaticの理解が若干おかしい気がしますけども、本題はそこじゃ無いですね


画像データをどこで管理するか、ですね
例えばシューティングゲームの自機のように、それが同時に複数存在しないオブジェクトなら同じクラスに組み込むのが分かりやすいでしょうが
雑魚敵など、同じものが複数存在することがあり得るならこの方法は無駄が多くて使えませんね

ですから僕ならGraphicクラスとか、そんな適当なクラスか構造体を作って纏めて入れておきます
後は敵に「画像の種類」の情報を持たせておき
描画する時にはGraphicクラス内の「画像の種類」に応じた画像を描画させる訳ですね

開放する必要がある時には(いつもDXライブラリを使うので)DeleteGraph関数使います


あ、これは僕が個人的にいいと思ってるやり方であって
王道かどうかは知りませんよ(苦笑)
最後に編集したユーザー jay on 2012年12月19日(水) 18:37 [ 編集 2 回目 ]
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: C++で複数の同じ敵をつくる場合の画像の管理について

#3

投稿記事 by ISLe » 11年前

リソースの最適化のために一つの画像に複数の種類の敵のイメージをまとめたりもするのですが、jayさんがおっしゃるようにイメージ管理クラスを用意するのが基本です。
あとは、イメージを参照するオブジェクトが所有権を取得して、それをカウントし、使われなくなった画像を自動的に解放する仕組みを入れれば完璧かと思います。

簡単なプログラムであれば、敵の種類ごとに画像をstaticで持つ方法でもかまわないと思います。
上記したように、所有権を持つインスタンスをカウントして、所有権を持つインスタンスが無くなったら解放すれば良いと思います。

AliceCoder
記事: 51
登録日時: 11年前

Re: C++で複数の同じ敵をつくる場合の画像の管理について

#4

投稿記事 by AliceCoder » 11年前

回答ありがとうございます
画像管理のクラスを作ってみたいと思います

閉鎖

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