ページ 11

弾の最大数が、選択武器によって変わる場合

Posted: 2009年11月09日(月) 02:30
by banba
C++初心者です。このサイトのゲームプログラミングの館の内容がわかり、龍神録の館の内容がだいたいわかる程度の能力です。

さっそく質問にうつります。僕は今、シューティングゲームではないんですけど
武器を決まった数選んで敵と戦うゲームを作ろうと思っています。
それぞれ違う武器を選ぶとなると、武器それぞれ性能により画面内に出せる弾の最大数が違う事になります。

そうなってくるとGV.hで
武器1の弾、武器2の弾~と全種類の武器の最大弾数分、構造体変数を宣言してしまっていいのでしょうか?

結構な量になると思うのですが、こういうのって容量的に大丈夫なのでしょうか?
それとも「選択した武器の最大弾数分、変数を用意して戦闘が終わったら消す」的なコードは作れたりしないのでしょうか?

ごめんなさい、かなりトンチンカンな質問かもしれません…。回答いただけたらありがたいです。

Re:弾の最大数が、選択武器によって変わる場合

Posted: 2009年11月09日(月) 07:40
by Naohiro19
こういう場合は構造体を利用すべきです。
typedef struc weapon 
{
    int weapon_type;      //武器の種類
    int bullet_type:      //玉の種類
    int bullet_max;       //発射できる最大数
    int flag;             //玉の消失フラグ(0:消えている、1:消えていない)
}WEAPON;

Re:弾の最大数が、選択武器によって変わる場合

Posted: 2009年11月09日(月) 18:10
by banba
回答ありがとうございます。やはり質問のしかたが良くなかったです、スミマセン…

構造体を利用しなくてはいけないのはわかるのですが、

たとえば武器1の弾は最大で画面に50発出せるモノとします。

次に弾を表す構造体が必要になるとなります。なので50個構造体の配列が必要になります。

他にも多く武器はあるのです。他に武器2があり最大の弾の数が20個だとするともう一種類、構造体の配列
が20個必要になります。
このまま続くと最終的に、全ての武器の最弾数分の構造体配列を宣言することになります。

この場合、宣言される構造体配列が膨大な量になってしまいます…
コレは最近のパソコンなら容量的に大丈夫なのでしょうか?
そうでなければ、「必要な分だけ、指定された構造体を宣言して使い終わった後は破棄、解放する」
というプログラムを組むにはどうすればよいのでしょうか?

Re:弾の最大数が、選択武器によって変わる場合

Posted: 2009年11月09日(月) 23:30
by Poco
> この場合、宣言される構造体配列が膨大な量になってしまいます…
> コレは最近のパソコンなら容量的に大丈夫なのでしょうか?

大丈夫です。
構造体1つが1KBのサイズであっても、武器を1000個作ってようやく1MBです。

> そうでなければ、「必要な分だけ、指定された構造体を宣言して使い終わった後は破棄、解放する」
> というプログラムを組むにはどうすればよいのでしょうか?

new/delete/C++というキーワードで検索してみてください。
うじゃうじゃ出ます。

Re:弾の最大数が、選択武器によって変わる場合

Posted: 2009年11月10日(火) 20:58
by banba
回答ありがとうございます!
助かりました!