- #include <iostream>
- #include <vector>
- #include <string>
- #include <algorithm>
- #include <ctime>
- #include <cstdlib>
- 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<Item> 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<Character> characters;
- std::vector<Monster> 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;
- }