0

私の問題は、毎回

Player

そのプレイヤーに割り当てられた Monster クラスの 10 個のインスタンスを追加するために作成されます。

これまでの私の仕事..

MAIN.CPP //ユーザーがプレーヤーを追加できるようにします。

if (myMenuChoice == 1) // add a player
      {
          if (numberOfPlayers>4)
          { 
              cout<<"Max of 5 players!"<<endl;
          }else{
              player[(numberOfPlayers)].addPlayer((numberOfPlayers));//create player class  
              numberOfPlayers++;

}

PLAYER.CPP

#include "main.h"

    Monster myMonsters[10]; //up to ten monsters on a team

Player::Player()
{

}

void Player::addPlayer(int x)
 {
    cout<<"added player"<<x<<endl;
    this->karma=0;
 }

ここまでの私の考えでは、プレイヤーが追加されるたびに、10 個の myMonsters が生成されるはずですよね? または私はそれを間違って宣言していますか?したがって、player[1] を作成すると、player1.myMonster[0] が myMonster[9] をスローする必要があります。これは、player2.myMonster[0] が myMonster[9] をスローした場合とは異なる値になります。

プレイヤーの myMonsters をリストすると、次のような奇妙な出力が表示されるので、player1 モンスターを選択しました

1
4
2

player2のモンスターを選択

5

この順序で、player1 のモンスターをリストすると、次のようになります。

5
4
2

各クラスではなく、1 つの myMonsters[10] だけを作成しているようです。どうすればこれを解決できますか?

モンスターを追加する方法と表示する方法が必要かどうかはわかりませんが、ここにあります。

main.ccp で

player[x].addMonster(monsterSelection);//add monster to this player class

player.cpp

void Player::addMonster(int monstername)
{
    int x=0;  //first monster
    if(this->numberOfMonsters >0)//do they have monsters all ready?
        x=this->numberOfMonsters;
    else
        this->numberOfMonsters = x;
    if (x<10)   
    {
        myMonsters[x].getNewMonster(monstername);
        this->numberOfMonsters++;
        cout<<"current number of monsters is: "<<numberOfMonsters;
    }
    else
        cout<<"sorry no more monsters for you!! 10 max"<<endl;
}

モンスターのリスト

player[x].listMyMonsters();

player.cppで

void Player::listMyMonsters()
{
    int x;
    x = this->numberOfMonsters;
    cout<<"Total number of monsters: "<<numberOfMonsters<<endl;
    int monsterCount=0;
    while(x!=0)
    {   
        cout<<"Monster ";
        cout<< monsterCount ;
        cout<<":\t";
        cout<<myMonsters[monsterCount].name;
        monsterCount++;
        cout<<"\n";
        x--;
    }
}

アップデート


if i add myMonsters in player.h class errors i get.
1>c:\documents and settings\tngmorse\desktop\test monsters\monstertest\monstertest\player.h(13) : error C2146: syntax error : missing ';' before identifier 'myMonsters'
1>c:\documents and settings\tngmorse\desktop\test monsters\monstertest\monstertest\player.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\tngmorse\desktop\test monsters\monstertest\monstertest\player.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

player.h

    enum Race {none,Living, Dead, Nature};
class Player
{
    public:
     Player();
    ~Player(){}


    int numberOfMonsters;
    int karma;
    bool myTurn;
    Race myRace;
    Monster myMonsters[10]; //up to ten monsters on a team


    void addPlayer(int x);
    void addMonster(int monstername);
    void listMyMonsters();
    Race getRace() const { return myRace; }


};
4

1 に答える 1