vectorで、全シーンを管理する

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic
記事: 658
登録日時: 15年前
住所: 宮崎県
連絡を取る:

vectorで、全シーンを管理する

#1

投稿記事 by dic » 13年前

お世話になります。dicです。
新しい質問、クールアイスさんと似たようなことをしていてて、次のようなソースを作ったことがあるのですが、
これは使い方としていいのでしょうか?マズいのでしょうか?
vectorクラスで、各シーンの要素を管理し、インデックス値で、それぞれの要素にアクセスします。
ステージ1、ステージ2、ステージ3、、、と、同時に生成するのでメモリ的にはやさしくないですが、
簡素に表現できるので、私にはやさしいです。
手を加えれば、ステージ1のときにステージ2がメモリにないようにもできますが、
ひとまず、この状態で、どのような評価を受けるのか聞きたいです。

私的に思うのは、vectorの使い方ではなくて、シューティングの構成要素をどのように認識するか?
で、違ってくるのではないのかと考えています。

コード:

// 質もん.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

using namespace std;
#include	<vector>

class	CBase
{
protected:
	int		m_mode;
public:
	virtual	void	Init() = 0;
	virtual	void	Release() = 0;
	virtual	void	Update() = 0;
};

class	CTitle	:	public	CBase
{
public:
	void	Init()		{	printf( "in Title::Init()\n" );		}
	void	Release()	{	printf( "in Title::Release()\n" );	}
	void	Update()	{	printf( "in Title::Update()\n" );	}
};
class	CSetting	:	public	CBase
{
public:
	void	Init()		{	printf( "in CSetting::Init()\n" );		}
	void	Release()	{	printf( "in CSetting::Release()\n" );	}
	void	Update()	{	printf( "in CSetting::Update()\n" );	}
};
class	CStage	:	public	CBase
{
public:
	void	Init()		{	printf( "in CStage::Init()\n" );		}
	void	Release()	{	printf( "in CStage::Release()\n" );	}
	void	Update()	{	printf( "in CStage::Update()\n" );	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	vector<CBase*>	vFunction;

	CBase*	title = new CTitle();
	CBase*	setting = new CSetting();
	CBase*	stage1 = new CStage();
	CBase*	stage2 = new CStage();

	vFunction.push_back( title );
	vFunction.push_back( setting );
	vFunction.push_back( stage1 );
	vFunction.push_back( stage2 );

	int	input = 0;
	while( input != -1 )
	{
		printf( "0: title\n" );
		printf( "1: setting\n" );
		printf( "2: stage\n" );
		printf( "3: stage\n" );
		printf( "-1: end\n" );

		if( (0<=input) && (input<=3) )
			vFunction.at(input)->Update();
		else
			printf( "-1 から 3 の数字を入れてください\n" );
		scanf_s( "%d", &input );
	}

	return 0;
}


// 追加
「評価」ではなく「感想」を聞きたいです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: vectorで、全シーンを管理する

#2

投稿記事 by h2so5 » 13年前

インデックスを0〜3で決め打ちするならvectorである必要性がないです。
あとpush_backした順番を知っておかないと、どこに何がはいっているのか分からないのもちょっとどうかと思いますね。

dic
記事: 658
登録日時: 15年前
住所: 宮崎県
連絡を取る:

Re: vectorで、全シーンを管理する

#3

投稿記事 by dic » 13年前

なるほど、たしかに決め打ちならそうなりますね。

決め打ちでいくなら

コード:

 CBase* vFunction[4];
でいいですね

感想ありがとうございます。

閉鎖

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