Advertisement
Guest User

Untitled

a guest
Apr 14th, 2023
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <random>
  4. #include <chrono>
  5. #include <cmath>
  6. #include <stdio.h>
  7.  
  8. struct Move {
  9.     std::string move; // move name
  10.     int base_dam; // base damage
  11. };
  12. struct Monster {
  13.     std::string name;
  14.     int lvl;
  15.     int hp;
  16.     int attack;
  17.     int defence;
  18.     int speed;
  19.     Move moveset[4];
  20. };
  21.  
  22. Monster rat{ "rat", 1 ,40 , 7 , 8 , 10, {{"Bite", 5}, {"Tail whip", 6}, {"Pounce", 9}} };
  23. Monster bat{ "bat", 1 ,50 , 6 , 4 , 13, {{"Wing attack", 7}, {"Sonic scream", 5}, {"Leech Life", 9}} };
  24. Monster imp{ "imp", 1 ,60 , 7 , 7 , 10, {{"Ember", 7}, {"Magic attack", 5}, {"Fire spin", 9}} };
  25. Monster kobold{ "kobold", 1 ,80, 18 , 15 , 18 , {{"Shortsword Slash", 10}, {"Sneak Attack", 15}, {"Quick Strike", 12}, {"Poison Dart", 14}} };
  26. Monster Goblin{ "Goblin" , 1, 60 , 10 , 13, 15, {{"Club Attack", 6 }, {"Heavy Attack", 9}, {"Head smash", 10}, {"slam", 7}} };
  27. Monster Skeleton{ "skeleton", 1 ,50 , 18 , 8 , 10, {{"Piercing arrow", 10 }, {"Poison arrow",10}, {"Bone arrow", 12}, {"Multi_shot" , 15}} };
  28. Monster Spider{ "spider", 1 ,80 , 8 , 15 , 18, { {"String shot", 9}, {"Poison Bite", 10}, {"Sharp Claw", 8}, {"Scratch", 6}} };
  29. Monster Slime{ "Slime" , 1 ,100 , 8 , 18 , 5, {{"Spikes", 6}, {"Gunk shout", 10}, {"Poison gas" , 8}, {"Toxic", 7}} };
  30.  
  31.  
  32. void battle(Monster* mon1, Monster& mon2)
  33. {
  34.     int input, dmg_taken, dmg_taken2;
  35.     while (mon1->hp > 0 && mon2.hp > 0) {
  36.  
  37.         std::cout << "Your lvl : " << mon1->lvl << "\t " << mon2.lvl << " lvl : " << mon2.lvl << std::endl;
  38.         std::cout << "Your HP : " << mon1->hp << "\t" << mon2.name << " HP : " << mon2.hp << std::endl;
  39.         std::cout << "What do you want to do?? \t" << " 1. Attack  2. Info\n";
  40.         std::cin >> input;
  41.         switch (input) {
  42.         case 1:
  43.             std::cout << "Choose your attack" << "\n";
  44.             for (int i{ 0 }; i < 4; i++) {
  45.                 std::cout << i + 1 << "." << mon1->moveset[i].move << "[" << mon1->moveset[i].base_dam << "]" << std::endl;
  46.             }
  47.             std::cin >> input;
  48.             std::cout << "You used " << mon1->moveset[input - 1].move << "\n";
  49.             dmg_taken = static_cast<int>(1.5 * (mon1->moveset[input - 1]).base_dam * static_cast<double>(mon1->attack) / mon2.defence);
  50.             std::cout << "You did " << dmg_taken << std::endl;
  51.             mon2.hp = mon2.hp - dmg_taken;
  52.             if (mon2.hp > 0) {
  53.                 std::mt19937 rn{ static_cast<unsigned int>(
  54.                     std::chrono::high_resolution_clock::now().time_since_epoch().count()
  55.                 ) };
  56.                 std::uniform_int_distribution<int> die4{ 1 , 3 };
  57.                 std::cout << "Monster" << " used " << mon2.moveset[die4(rn)].move << std::endl;
  58.                 dmg_taken2 = static_cast<int>(1.5 * mon1->moveset[input - 1].base_dam * static_cast<double>(mon2.attack) / mon1->defence);
  59.                 std::cout << "You lost " << dmg_taken2 << " hp" << std::endl;
  60.                 mon1->hp = mon1->hp - dmg_taken2;
  61.             }
  62.             if (mon1->hp == 0) {
  63.                 std::cout << "you lost lmao\n";
  64.             }
  65.  
  66.             break;
  67.         case 2:
  68.             std::cout << "Stats" << std::endl;
  69.             std::cout << "HP       : " << mon1->hp << "\n";
  70.             std::cout << "Attack   : " << mon1->attack << "\n";
  71.             std::cout << "Defence  : " << mon1->defence << "\n";
  72.             std::cout << "Speed    : " << mon1->speed << "\n";
  73.         }
  74.     }
  75.  
  76. }
  77.  
  78.  
  79. int main(){
  80.   int a;
  81.   Monster *ptr;
  82.   std::cin>>a;
  83.   switch(a){
  84.     case 1:
  85.       ptr = &Goblin;
  86.     break;
  87.     case 2:
  88.       ptr = &Skeleton ;
  89.     break;
  90.     case 3:
  91.       ptr = &Spider ;
  92.     break;
  93.   }
  94.   battle(ptr , kobold);
  95.   return 0;
  96. }
Tags: C++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement