2012-01-05 18 views
-1

私は単純なdosベースのゲームを作ろうとしていましたが、私はいくつかのmobを作成したいと思ったので、私は必要とする次の大まかなオブジェクトを考え出しました。このように:単純なゲーム設定で適切なオブジェクトの使用

class createMob{ 
    private: 
     int healthMax; 
     int healthCurrent; 
     int manaMax; 
     int manaCurrent; 
     int experiencePoints; 

public: 
    void setHealth(); 
    int getHealth(); 
    void setCurrentHealth(); 
    int getCurrentHealth(); 

    void setMaxMana(); 
    int getMaxMana(); 
    void setCurrentMana(); 
    int getCurrentMana(); 

    int getExperience(); 
//etc etc functions truncated for space 


}; 

私はこれをどのように使用しますか?私は単純なコンストラクタを作成し、 "green slime"(ここでは最終的なファンタジーテーマと呼ばれる)というmobのhp/mp /エクスペリエンスを取ると仮定します。私の基本的な目標は、x/y/z属性のモンスターを作成し、戦闘で何が起きたかに基づいて設定することです。これを行う最も簡単な方法は、後で効率的にクリーンアップすることです。今、この機能は、プロパティを変更することができます

void fight(Mob &m1, Mob &m2, int fightstep); 

+2

'createMob'は良い名前ですか?おそらくこのクラスからかなり派生していると思われるので、 'baseMob'などのようなものをお勧めします。名前は、クラスが何らかの種類のファクトリクラスであることを示しています。レイアウトは正しいとは限りません。 –

+3

これは非常に広い質問です。あなたは基本的にプログラムを書く方法を尋ねます。 –

+3

緑の粘液は、ドラゴンクエストのテーマではなく、ファイナルファンタジーです。 –

答えて

0
あなたは戦いで2人の暴徒を持っている場合は、戦いは1ターン以上に時間がかかるとしている

ので、1戦いのターンは、次のグローバル関数が必要になるだろう両方の暴徒の今、暴徒が実際に戦いが起こっているかを選択するためにいくつかのアクションを行っている場合は、あなたが別の何か必要があります:アクションはこのようなものであることを

void fight(Mob &m1, Mob &m2, 
      std::vector<Action> vec1, std::vector<Action> vec2, 
      int fightstep); 

を:

enum Action { EDoNothing, EBash, ECastSpellXXXX ... }; 

今戦いの機能ができます変更を行うにはMobクラスのインタフェースを使用します。

関連する問題