Untitled

 avatar
unknown
c_cpp
24 days ago
1.5 kB
4
Indexable
#include <iostream>
using namespace std;

class DamageCalculator
{
    float swordDamage = 5;
    int minDamage = 3;
    int maxDamage = 7;

public:

    float SimpleCalculateDamage(float baseDamage)
    {
        return swordDamage + baseDamage;
    }

    float MinMaxCalculateDamage(float baseDamage)
    {
        return baseDamage + rand() % maxDamage + minDamage;
    }

    float CritChanceCalculateDamage(float baseDamage, float critChance)
    {
        int chanceThrow = rand() % 100 + 1;

        int critMultiplier =  chanceThrow < critChance ? 3 : 1;

        return critMultiplier * swordDamage + baseDamage;
    }
};

class Player
{
    int baseDamage;
    DamageCalculator damageCalculator;

public: 
    Player(int baseDamage, DamageCalculator& damageCalculator)
    {
        this->baseDamage = baseDamage;
        this->damageCalculator = damageCalculator;
    }

    void Attack(Enemy& enemy)
    {
        cout << "НЫА ПОЛУЧАЙ" << endl;
        float damage = damageCalculator.SimpleCalculateDamage(baseDamage);

        enemy.TakeDamage(damage);
    }
};

class Enemy
{
    int health;
public:
    Enemy(int health)
    {
        this->health = health;
    }

    void TakeDamage(int damageToTake)
    {
        health -= damageToTake;
    }
};

int main() {
    DamageCalculator damageCalc;
    Player pacan(5, damageCalc);
    Enemy kabanchik(100);

    pacan.Attack(kabanchik);
}
Editor is loading...
Leave a Comment