ページ 11

新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 19:10
by わくわくさん
こんばんわ

C++とDXライブラリを勉強しているのですが分からないところがあったので、質問です。

ちょこっと具体性にかけるかもしれないですが・・・
私は、現在、オリジナルのRPGを作りたいと思っています。

RPGといっても、ドラ◎エのように主人公が決まっているものではなくて
ポ◎モンのように、仲間を集めていくタイプです。

必要なステータスを決めてモンスターのクラスを作ったのですが
新しいモンスターをゲットした時、どうやって新しいモンスターとしてクラスから
オブジェクトを作成したらいいのか、ピンときません。

おしえてください。

モンスターは体力、魔力、攻撃力、防御力、素早さのステータスを持っています。
一応、コードを書きます。

コード:

 
//モンスタークラス
class MON{	
private:
	int x, y;	//表示する時の座標
	int hp, mp, at, df, sp;	//モンスターのステータス
	int gh;	//画像用メモリ
public:
	MON();
	void Draw();
};
//初期設定
MON::MON(){
	x = y = 16;	//初期座標
	hp = mp = 10;	//HPとMPは10から
	at = df = sp = 3;	//ATとDFとSPは3から
	gh = LoadGraph("mon01.png");	//画像の読み込み 16×16のPNG画像
}
//モンスターの表示
void MON::Draw(){
	DrawGraph(x,y,gh,TRUE);
}
 

Re: 新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 19:42
by softya(ソフト屋)
新しいインスタンスを作るだけなら、newするだけですがそういう意味ではないですよね?
実際に使う段階で何処ら辺が疑問でしょうか。
なお、クラス名がMONと大文字なのは定数と間違いそうなのでオススメできません。

Re: 新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 21:08
by わくわくさん
softya(ソフト屋) さんが書きました:新しいインスタンスを作るだけなら、newするだけですがそういう意味ではないですよね?
実際に使う段階で何処ら辺が疑問でしょうか。
なお、クラス名がMONと大文字なのは定数と間違いそうなのでオススメできません。
そうなんですね。参考にしていたサイトで大文字にしてたのでマネしていました。
小文字にしますね。

ニューで1体だけ作るのはわかるのですが、次々に作って、別のオブジェクトとして
扱うにはどうしたらいいのでしょうか?

たとえば、Aを押したら1匹づつ新しいモンスターが増えるなどを練習として作ろうと
思っていましたがよくわからなくて混乱してきました

Re: 新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 21:12
by softya(ソフト屋)
newで生成されたインスタンスは生成される度に別のオブジェクトです。
配列やvectorなどに各インスタンスのポインタを保持させてはダメなのでしょうか?
この質問は、C++の文法の理解自体が怪しい感じでしょうか?
C言語や別の言語なら出来ますか?

Re: 新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 21:32
by わくわくさん
softya(ソフト屋) さんが書きました:newで生成されたインスタンスは生成される度に別のオブジェクトです。
配列やvectorなどに各インスタンスのポインタを保持させてはダメなのでしょうか?
この質問は、C++の文法の理解自体が怪しい感じでしょうか?
C言語や別の言語なら出来ますか?
ごめんなさい。私よくわかっていなかったみたいです。
講座みたいなサイトで使って勘違いしてました。
(あとオブジェクトとインスタンスって同じものだと思ってました・・・)

オブジェクト作ってから別の関数で分けて使うようにしたらいいのかな
配列は少し勉強しましたが、ベクターなどは初めて聞いたので調べてみます。

ありがとうございました。

Re: 新しいオブジェクトを次々に作成する方法

Posted: 2014年5月15日(木) 21:39
by softya(ソフト屋)
オブジェクトとインスタンスと同じといえば同じかもしれませんが。言語とか、そういうので呼び方や微妙に意味が変わります。
かなり文法レベルの理解が怪しそうなので、もう少し勉強されたほうが良さそうです。
文法レベルの質問も、分からなかったら聞いてください。

「別の関数で分けて使うようにしたらいいのかな」なにを基準に分けるのでしょう? これも同じ問題突き当たりそうです。