今日は「継承」や「vector」といったものについての質問です。
現在ステージ1~5程度まである簡単なミニゲームを作ろうとしています。
今まではステージを作るなら
ステージ1{
更新()
};
ステージ2{
更新()
};
メインループ
{
switch(シーン)
{
case Stage:
switch(stage_number)
{
case 1:
ステージ1.更新()
case 2:
ステージ2.更新()
}
}
}
しかし、せっかくc++を使っているのに、「継承」やら「vector(コンテナ?)」やらを使わないのはもったいないし、何より勉強にならないのではないかと勝手に思っています。
そこで、「基底クラスを作り継承」「沢山あるステージクラスをvectorで管理」しようと考えました。
以下が調べながら考えたものです。
BaseStage.h
class BaseStage
{
public:
BaseStage() {} // コンストラクタ
virtual ~BaseStage() {} // デストラクタ
virtual void Run() = 0; // 全更新
protected:
virtual void Update() = 0;// 更新
virtual void Draw() = 0; // 描画
};
class Stage1 : public BaseStage
{
public:
Stage1() {}
~Stage1() {}
virtual void Run();
private:
virtual void Update();
virtual void Draw();
};
void Stage1::Update()
{}
void Stage1::Draw()
{}
void Stage1::Run()
{
Update();// 更新
Draw(); // 描画
}
長々と書いてしまいましたが、継承やvectorの使い方、認識はこれで合っているでしょうか?