我正在构建稍后将用于 RPG 的小型组件,但是我在这种规模的项目中的经验非常有限,这就是为什么我选择独立构建它们的原因。这部分将涵盖角色创建和处理。
所以我有以下存储性别的类指针的向量。我知道只有四种性别,未知(用于捕捉错误)、男性、女性和中性。
std::vector<Gender*> mGenders;
但是对于其他一些向量,我不知道确切的数量。
std::vector<BClass*> mBClasses;
我有具有 mGenderID 和 mBClassID 的生物。我有一个初始化所有性别和基类(以及许多其他类)的 game.h。假设我有一个
Creature* mPC = new Creature ("Name", GenderID, BClassID);
那么我应该有一个
Gender* Game::getGenderByID(int id) {
for (std::vector<Gender*>::iterator it = mGenders.begin(); it != mGenders.end(); ++i) {
if ((*it)->getID() == id) return (*it)
}
}
并通过以下方式使用它
std::cout << "Your name is " << mPC->getName() << ". Your gender is " << getCreatureByID(mPC->getGenderID())->getName();
所以我的问题是,这是构建代码的好方法吗?想象一个无限引擎的游戏,博德之门左右。最好它应该适用于大多数人,即使我要做一个天际或类似 GTA 的游戏。
最后,移植到 C# 有多容易?因为我比 C# 更了解 C++,所以我想我会先在 C++ 中试一试,以使结构正确并使用可用于大型项目的东西。
编辑:直接将 Gender* 存储在 Creature 类中会更好吗?没有生物的ID?
编辑2:
class Gender {
public:
Gender::Gender(int id, std::string name, std::string desc, int coeBonus, int strBonus, int agiBonus, int attBonus, int intBonus, int chaBonus);
~Gender();
int getID () const;
std::string getName () const;
std::string getDesc () const;
int getStrBonus () const;
int getAgiBonus () const;
int getAttBonus () const;
int getIntBonus () const;
int getChaBonus () const;
int getCoeBonus () const;
private:
int mID;
std::string mName;
std::string mDesc;
int mStrBonus;
int mAgiBonus;
int mAttBonus;
int mIntBonus;
int mChaBonus;
int mCoeBonus;
};
性别.h的定义
提前致谢