私の問題は、毎回
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; }
};