gpt4 book ai didi

c++ - 怪物阵列无法按我需要的方式工作

转载 作者:行者123 更新时间:2023-11-28 07:32:55 25 4
gpt4 key购买 nike

我的问题是,我想每次

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++;

}

播放器.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] throw myMonster[9] 与 player2.myMonster[0] throw myMonster[9] 不同的值

现在当我列出玩家的 myMonsters 时,它会给出奇怪的输出,就像这样我选择了玩家1的怪物

1
4
2

我选择了玩家2的怪物

5

按照这个顺序,当我列出 player1 的怪物时,我得到

5
4
2

它似乎只制作一个 myMonsters[10] 而不是每个类(class),我该如何解决这个问题?

不确定您是否需要我如何添加怪物或查看它们,但在这里,

在 main.ccp 中

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

播放器.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

播放器.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; }


};

最佳答案

正如@Patashu 指出的那样。您在 class Player 的声明之外声明了 Monster myMonsters[10];,所以它不是一个实例变量,它在整个程序中存在一次

这就是让Monster成为Player的成员变量的方法。下面的代码将编译。添加您需要的任何其他语句,添加到代码中

//播放器.h

#ifndef PLAYER
#define PLAYER
#include "Monster.h"
class Player
{
Monster M[10];
};
#endif

//怪物.h

#ifndef MONSTER
#define MONSTER

class Monster
{

};

#endif

//主程序h

#ifndef MAIN
#define MAIN

#include "Player.h"
#include "Monster.h"

#endif

// main.cpp

#include "Main.h"

int main()
{
Player P;
return 0;
}

关于c++ - 怪物阵列无法按我需要的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17311650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com