私は楽しみのためにテキストベースのゲームに取り組んでおり、基本クラスからの継承に苦労しています。Being
作成したキャラクターのすべての統計を保持する基本クラスがあります。次に、すべての統計情報を取得して(または、存在から取得して戦闘に渡しますか?)、すべての戦闘作業を実行しCombat
たいクラスがあります。Being
しかし、私は継承、または少なくともそれを機能さMain
せるために関数を宣言する方法を完全には理解していません。で攻撃関数を保持している場合はBeing
、次の行をmainに書き込むことができます。
human.attack(monster);
しかし、戦闘を別のクラスに分割した後、それが機能するようにメインでそれを書く方法がわかりません。どうぞよろしくお願いします!
class Being // Base Class
{
public:
string name, nameSpecialAttack; // Implement a special attack feature,
// that has a specific mutliplier #
// unique to each being
int attackBonus, attackMod; // was a float attackMod method for casting
// spells that double or halve a Being’s
// attack power.
int baseDamage; // base damage
int health, healthMax; // current health and max health
int mp, mpMax; // current mp and max mp
int arrows; // change to [ranged?] ammo
Being(); // Default Constructor
Being(string name, string nameSpecialAttack, int attackBonus,
int attackMod, int baseDamage, int health, int healthMax,
int mp, int mpMax, int arrows); // Constructor 2
// All my set and get functions
}
次に、私の派生クラス:
class Combat : public Being
{
private:
public:
void attack(Being& target);
};
Combat.cpp:
void Combat::attack(Being& target)
{
//unsigned seed = time(0);
//srand(seed);
// Rand # 0-99, * damage+1, /100, * attackMod, parse to int.
int damage = (int)(attackMod*( ( (rand()%100)*(baseDamage+1) /100) + attackBonus + (rand()%2)));
target.health -=damage;
cout << name << " attacks " << target.name << " doing " << damage << " damage!" << endl;
cout << target.name << "'s health: " << target.health << endl;
// Use getHealth() instead and put this function there
if(target.health <= 0)
{
cout << endl << name << " killed " << target.name << "! You have won the game! " << endl << endl;
cout << "Terminating AMnew World, Good Bye.\n" << endl << endl;
exit(0);
}
}
主要:
Being human("", "FirstofFurry", 2, 1, 2, 50, 50, 20, 30, 7); // A thing of
// class Being
Being monster("Armored Goblin", "Rawr", 2, 1, 2, 65, 59, 20, 20, 6);
int main()
{
human.attack(monster); // No longer works since attack is in
// combat class now
Sleep(3000);
cout << endl << endl;
monster.attack(human);
}