Facebook
From Nccbn, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 118
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5. #include <ctime>
  6. #include <cstdlib>
  7.  
  8. class Item {
  9. public:
  10.     std::string name;
  11.     std::string type;
  12.     int value;
  13.  
  14.     Item(std::string name, std::string type, int value) : name(name), type(type), value(value) {}
  15. };
  16.  
  17. class Character {
  18. public:
  19.     std::string name;
  20.     int level;
  21.     int hitPoints;
  22.     int manaPoints;
  23.     std::vector<Item> inventory;
  24.  
  25.     Character(std::string name, int level, int hitPoints, int manaPoints) :
  26.         name(name), level(level), hitPoints(hitPoints), manaPoints(manaPoints) {}
  27.  
  28.     void addItem(const Item& item) {
  29.         inventory.push_back(item);
  30.     }
  31.  
  32.     Item* getWeapon() {
  33.         for (auto& item : inventory) {
  34.             if (item.type == "Weapon") {
  35.                 return &item;
  36.             }
  37.         }
  38.         return nullptr;  // No weapon found
  39.     }
  40. };
  41.  
  42. class Monster : public Character {
  43. public:
  44.     int strength;
  45.     int speed;
  46.  
  47.     Monster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) :
  48.         Character(name, level, hitPoints, manaPoints), strength(strength), speed(speed) {}
  49. };
  50.  
  51. class Game {
  52. public:
  53.     std::vector<Character> characters;
  54.     std::vector<Monster> monsters;
  55.  
  56.     void createCharacter(std::string name, int level, int hitPoints, int manaPoints) {
  57.         characters.emplace_back(name, level, hitPoints, manaPoints);
  58.     }
  59.  
  60.     void createMonster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) {
  61.         monsters.emplace_back(name, level, hitPoints, manaPoints, strength, speed);
  62.     }
  63.  
  64.     void fight(Character& character, Monster& monster) {
  65.         std::cout << "Walka rozpoczyna się między " << character.name << " a " << monster.name << std::endl;
  66.         std::cout << character.name << " HP: " << character.hitPoints << ", " << monster.name << " HP: " << monster.hitPoints << std::endl;
  67.  
  68.         srand(time(0)); // Initialize random seed
  69.  
  70.         while (character.hitPoints > 0 && monster.hitPoints > 0) {
  71.             Item* weapon = character.getWeapon();
  72.             std::string weaponName = weapon ? weapon->name : "gołe pięści";
  73.             int characterDamage = std::max(0, (character.level * 3 + rand() % 10) - monster.speed);
  74.             monster.hitPoints = std::max(0, monster.hitPoints - characterDamage);
  75.             std::cout << character.name << " atakuje " << monster.name << " używając " << weaponName << ", zadaje " << characterDamage << " obrażeń. HP potwora: " << monster.hitPoints << std::endl;
  76.  
  77.             if (monster.hitPoints > 0) {
  78.                 int monsterDamage = std::max(0, (monster.strength * 2 + rand() % 10) - character.level * 2);
  79.                 character.hitPoints = std::max(0, character.hitPoints - monsterDamage);
  80.                 std::cout << monster.name << " atakuje " << character.name << ", zadaje " << monsterDamage << " obrażeń. HP bohatera: " << character.hitPoints << std::endl;
  81.             }
  82.         }
  83.  
  84.         if (character.hitPoints > 0) {
  85.             std::cout << character.name << " wygrywa walkę." << std::endl;
  86.         } else {
  87.             std::cout << monster.name << " wygrywa walkę." << std::endl;
  88.         }
  89.     }
  90. };
  91.  
  92. int main() {
  93.     Game rpgGame;
  94.  
  95.     rpgGame.createCharacter("Hero", 5, 100, 30);
  96.     rpgGame.createMonster("Goblin", 3, 50, 10, 20, 15);
  97.  
  98.     rpgGame.characters[0].addItem(Item("Miecz", "Weapon", 10));
  99.  
  100.     rpgGame.fight(rpgGame.characters[0], rpgGame.monsters[0]);
  101.  
  102.     return 0;
  103. }