Facebook
From Hhhh, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 111
  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.  
  33. class Monster : public Character {
  34. public:
  35.     int strength;
  36.     int speed;
  37.  
  38.     Monster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) :
  39.         Character(name, level, hitPoints, manaPoints), strength(strength), speed(speed) {}
  40. };
  41.  
  42. class Game {
  43. public:
  44.     std::vector<Character> characters;
  45.     std::vector<Monster> monsters;
  46.  
  47.     void createCharacter(std::string name, int level, int hitPoints, int manaPoints) {
  48.         characters.emplace_back(name, level, hitPoints, manaPoints);
  49.     }
  50.  
  51.     void createMonster(std::string name, int level, int hitPoints, int manaPoints, int strength, int speed) {
  52.         monsters.emplace_back(name, level, hitPoints, manaPoints, strength, speed);
  53.     }
  54.  
  55.     void fight(Character& character, Monster& monster) {
  56.         std::cout << "Walka rozpoczyna się między " << character.name << " a " << monster.name << std::endl;
  57.  
  58.         srand(time(0)); // Initialize random seed
  59.  
  60.         while (character.hitPoints > 0 && monster.hitPoints > 0) {
  61.             int characterDamage = std::max(0, (character.level * 3 + rand() % 10) - monster.speed);
  62.             monster.hitPoints -= characterDamage;
  63.             std::cout << character.name << " atakuje i zadaje " << characterDamage << " obrażeń. " << monster.name << " HP: " << monster.hitPoints << std::endl;
  64.  
  65.             if (monster.hitPoints > 0) {
  66.                 int monsterDamage = std::max(0, (monster.strength * 2 + rand() % 10) - character.level * 2);
  67.                 character.hitPoints -= monsterDamage;
  68.                 std::cout << monster.name << " atakuje i zadaje " << monsterDamage << " obrażeń. " << character.name << " HP: " << character.hitPoints << std::endl;
  69.             }
  70.         }
  71.  
  72.         if (character.hitPoints > 0) {
  73.             std::cout << character.name << " wygrywa walkę." << std::endl;
  74.         } else {
  75.             std::cout << monster.name << " wygrywa walkę." << std::endl;
  76.         }
  77.     }
  78. };
  79.  
  80. int main() {
  81.     Game rpgGame;
  82.  
  83.     rpgGame.createCharacter("Hero", 5, 100, 30);
  84.     rpgGame.createMonster("Goblin", 3, 50, 10, 20, 15);
  85.  
  86.     rpgGame.characters[0].addItem(Item("Miecz", "Broń", 10));
  87.  
  88.     rpgGame.fight(rpgGame.characters[0], rpgGame.monsters[0]);
  89.  
  90.     return 0;
  91. }