#include #include // Библиотека веткоров #include // Для просчета шанса попадания using namespace std; class CTank { private: // Члены класса int m_Ammo; int m_HitChance; // Шанс в процентах 0 - 100% int m_EnemiesDown; bool m_wasHitTheTarget = false; // Присваивем false, т.к танк при создании еще не стрелял float m_Fuel; // Функция расчета удачног попадания bool randHitCalc() // Cоздаем в секции private , т.к пользовтель не должен иметь доступ к этой функции { static std::random_device rd; static std::mt19937 mersenne(rd()); if(mersenne() % 101 < m_HitChance) //Удачное попадание return true; return false; }; public: // Списковая инициализация челнов класса с версии C++11 // То есть допустим m_Ammo(Ammo) после двоеточия присвоит значение переданное в конструтор // Члену класса m_Ammo CTank(int Ammo, int EnemiesDown, float Fuel, int HitChance): m_Ammo(Ammo), m_EnemiesDown(EnemiesDown), m_Fuel(Fuel), m_HitChance(HitChance){}; // Сеттеры или же методы для установки значения членов класса void setAmmo(int n) { m_Ammo = n; }; void setFuel(int n) { m_Fuel = n; }; void setEnemiesDown(int n) { m_EnemiesDown = n; }; void setHitChance(int n) { m_HitChance = n; }; // Геттеры или же методы для получения значения членов класса int getAmmo() { return m_Ammo; }; int getFuel() { return m_Fuel; }; int getEnemiesDown() { return m_EnemiesDown; }; int getHitChance() { return m_HitChance; }; //Выстрел void Shoot() { if(m_Ammo < 1) // Если нет патронов { cout << "No Ammo"<< endl; return; } m_Ammo--; // Уменьшаем патроны на 1; m_wasHitTheTarget = randHitCalc(); // Проверяем попали или нет } //Проверка на успех выстрела void wasShootSucceed() { if(m_wasHitTheTarget) { cout << "Perfect shoot" << endl; m_wasHitTheTarget = false; return; } cout << "Bad shoot" << endl; }; // Cимуляция движения танка void Move(float n) { if(m_Fuel < n) { cout << "Low Fuel" << endl; return; } m_Fuel -= n; }; //Получения состояния танка void Status() { cout << "Ammo: " << m_Ammo << endl; cout << "Hit Chance: " << m_HitChance << "%" << endl; cout << "Enemies Destroyed: " << m_EnemiesDown << endl; cout << "Fuel: " << m_Fuel << endl; }; }; int main() { CTank Abrams(100, 5, 100, 50); Abrams.Status(); return 0; }