#include #include #include #include #include #include class Item { public: std::string name; std::string type; int value; Item(std::string name, std::string type, int value) : name(name), type(type), value(value) {} }; class Character { public: std::string name; int level; int hitPoints; int manaPoints; std::vector inventory; Character(std::string name, int level, int hitPoints, int manaPoints) : name(name), level(level), hitPoints(hitPoints), manaPoints(manaPoints) {} void addItem(const Item& item) { inventory.push_back(item); } }; class Monster : public Character { public: int strength; int speed; Monster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) : Character(name, level, hitPoints, manaPoints), strength(strength), speed(speed) {} }; class Game { public: std::vector characters; std::vector monsters; void createCharacter(std::string name, int level, int hitPoints, int manaPoints) { characters.emplace_back(name, level, hitPoints, manaPoints); } void createMonster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) { monsters.emplace_back(name, level, hitPoints, manaPoints, strength, speed); } void fight(Character& character, Monster& monster) { std::cout << "Walka rozpoczyna się między " << character.name << " a " << monster.name << std::endl; srand(time(0)); // Initialize random seed while (character.hitPoints > 0 && monster.hitPoints > 0) { int characterDamage = std::max(0, (character.level * 3 + rand() % 10) - monster.speed); monster.hitPoints -= characterDamage; std::cout << character.name << " atakuje i zadaje " << characterDamage << " obrażeń. " << monster.name << " HP: " << monster.hitPoints << std::endl; if (monster.hitPoints > 0) { int monsterDamage = std::max(0, (monster.strength * 2 + rand() % 10) - character.level * 2); character.hitPoints -= monsterDamage; std::cout << monster.name << " atakuje i zadaje " << monsterDamage << " obrażeń. " << character.name << " HP: " << character.hitPoints << std::endl; } } if (character.hitPoints > 0) { std::cout << character.name << " wygrywa walkę." << std::endl; } else { std::cout << monster.name << " wygrywa walkę." << std::endl; } } }; int main() { Game rpgGame; rpgGame.createCharacter("Hero", 5, 100, 30); rpgGame.createMonster("Goblin", 3, 50, 10, 20, 15); rpgGame.characters[0].addItem(Item("Miecz", "Broń", 10)); rpgGame.fight(rpgGame.characters[0], rpgGame.monsters[0]); return 0; }