我想创建一些基于文本的足球经理游戏,至少试一试。经过长时间的思考和一些尝试,我仍然不确定类的结构。我的第一个想法是创造这样的东西:
class Player
{
private:
Team team:
};
class Team
{
vector<Player> playerlist;
};
你觉得用这种方式直接评估或使用像这样的指针是聪明的吗?
class Player
{
private:
Team* team:
};
class Team
{
vector<Player*> playerlist:
};
然后我不知道我是否应该使用向量或列表,考虑到传输将改变长度,向量将改变存储在其中的玩家的地址。所以指向这个向量的指针可能是一个问题。
所以我对此非常不确定,主要是由于我对C ++的不良体验。您认为设置它的最佳方式是什么?
答案 0 :(得分:1)
尝试将课程分解为逻辑分组。我通常会发现一个好的方法就是写一篇关于游戏内容的简短段落。拆分所有名词 - 这些通常是类或属性。拆分所有动词 - 通常是方法。
玩家是否包含团队?或者一支球队是否包含球员?如果你想让玩家了解这个团队,你可以做这样的事情。
class Player
{
public:
Player() : m_myTeam(NULL) {}
void SetTeam(Team* team);
private:
Team* m_myTeam;
};
class Team
{
public:
void AddPlayer(Player* player);
private:
std::vector<Player*> m_players;
};
我在这里考虑的另一件事是,球队不能创造球员。玩家应该由某种工厂创建,因为玩家可以随心所欲地来自团队,只要他们的合同允许! :d