Les Classes Dérivées De C++

Je suis en train de travailler sur un texte de base de jeu pour le plaisir et je suis aux prises avec l'héritage
à partir d'une classe de base. J'ai ma classe de base Being qui détient tous les résultats
le caractère que j'ai créer. J'ai ensuite une classe Combat que je veux prendre
toutes les stats de Being (Ou d'un Être et la passer dans le combat?) et ne
tout le combat de trucs. Mais je ne suis pas tout à fait de la compréhension de l'héritage, ou au moins
comment déclarer les fonctions dans Main pour le faire fonctionner. Si je continue à l'attaque
fonction dans Being, je peux juste écrire cette ligne principale:

human.attack(monster);

Mais après le partage de la combattre dans une autre classe, je ne suis pas sûr de la façon d'écrire
qui en principal de sorte qu'il fonctionne. Merci & merci pour votre aide!

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
}

Puis ma classe dérivée:

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);
    }
}

Principal:

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);
}
  • Ce ne devrait probablement pas être une relation d'héritage. Diriez-vous d'un "Combat" est une sorte de "Être"? J'en doute.
  • J'ai le sentiment que le "Combat" est l'abréviation de "quelque chose qui peut engager le combat".
  • Oui je pense que le Combat de classe est inutile ici, la méthode pourrait être en Cours de
  • Je ne sais pas pourquoi, que ce principe de base glissé mon esprit. Merci à vous tous pour me droite, qui a rendu les choses beaucoup plus facile quand j'ai arrêté de penser comme cela.
InformationsquelleAutor Riotson | 2012-10-25