我的问题是,我希望每次都能
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吗?还是我宣布错了? 因此,如果我创建播放器[1],我现在应该有player1.myMonster [0]抛出myMonster [9]这将是来自player2.myMonster [0]的不同值抛出myMonster [9]
现在,当我为播放器列出myMonsters时,它会给出奇怪的输出 我选择了player1怪物
1
4
2
我选择了player2怪物
5
按此顺序,当我为player1列出怪物时,我得到了
5
4
2
它似乎只是制作一个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; }
};
答案 0 :(得分:1)
正如@Patashu指出的那样。你在Monster myMonsters[10];
的声明之外声明class Player
,所以它不是每个实例的变量,它在整个程序中都存在一次
这是使Monster
成为Player
成员变量的方法。下面的代码将编译。添加您需要的任何其他语句,添加到代码
// Player.h
#ifndef PLAYER
#define PLAYER
#include "Monster.h"
class Player
{
Monster M[10];
};
#endif
// Monster.h
#ifndef MONSTER
#define MONSTER
class Monster
{
};
#endif
// Main.h
#ifndef MAIN
#define MAIN
#include "Player.h"
#include "Monster.h"
#endif
// main.cpp中
#include "Main.h"
int main()
{
Player P;
return 0;
}