Facebook
From Hbbbbbg, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 117
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5.  
  6. class Item {
  7. public:
  8.     std::string name;
  9.     std::string type;
  10.     int value;
  11.  
  12.     Item(std::string name, std::string type, int value) : name(name), type(type), value(value) {}
  13. };
  14.  
  15. class Character {
  16. public:
  17.     std::string name;
  18.     int level;
  19.     int hitPoints;
  20.     int manaPoints;
  21.     std::vector<Item> inventory;
  22.  
  23.     Character(std::string name, int level, int hitPoints, int manaPoints) :
  24.         name(name), level(level), hitPoints(hitPoints), manaPoints(manaPoints) {}
  25.  
  26.     void addItem(const Item& item) {
  27.         inventory.push_back(item);
  28.     }
  29. };
  30.  
  31. class Monster : public Character {
  32. public:
  33.     int strength;
  34.     int speed;
  35.  
  36.     Monster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) :
  37.         Character(name, level, hitPoints, manaPoints), strength(strength), speed(speed) {}
  38. };
  39.  
  40. class Game {
  41. public:
  42.     std::vector<Character> characters;
  43.     std::vector<Monster> monsters;
  44.  
  45.     void createCharacter(std::string name, int level, int hitPoints, int manaPoints) {
  46.         characters.emplace_back(name, level, hitPoints, manaPoints);
  47.     }
  48.  
  49.     void createMonster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) {
  50.         monsters.emplace_back(name, level, hitPoints, manaPoints, strength, speed);
  51.     }
  52.  
  53.     void fight(Character& character, Monster& monster) {
  54.         std::cout << "Walka rozpoczyna się między " << character.name << " a " << monster.name << std::endl;
  55.  
  56.         while (character.hitPoints > 0 && monster.hitPoints > 0) {
  57.             // Monster attacks first
  58.             int monsterAttack = std::max(0, monster.strength - character.level * 2);
  59.             character.hitPoints -= monsterAttack;
  60.             std::cout << monster.name << " atakuje i zadaje " << monsterAttack << " obrażeń. " << character.name << " HP: " << character.hitPoints << std::endl;
  61.  
  62.             if (character.hitPoints > 0) {
  63.                 // Character attacks back
  64.                 int characterAttack = std::max(0, character.level * 2 - monster.speed);
  65.                 monster.hitPoints -= characterAttack;
  66.                 std::cout << character.name << " atakuje i zadaje " << characterAttack << " obrażeń. " << monster.name << " HP: " << monster.hitPoints << std::endl;
  67.             }
  68.         }
  69.  
  70.         if (character.hitPoints > 0) {
  71.             std::cout << character.name << " wygrywa walkę." << std::endl;
  72.         } else {
  73.             std::cout << monster.name << " wygrywa walkę." << std::endl;
  74.         }
  75.     }
  76. };
  77.  
  78. int main() {
  79.     Game rpgGame;
  80.  
  81.     rpgGame.createCharacter("Hero", 5, 100, 30);
  82.     rpgGame.createMonster("Goblin", 3, 50, 10, 20, 15);
  83.  
  84.     rpgGame.characters[0].addItem(Item("Miecz", "Broń", 10));
  85.  
  86.     rpgGame.fight(rpgGame.characters[0], rpgGame.monsters[0]);
  87.  
  88.     return 0;
  89. }