Advertisement
Guest User

Simulareon

a guest
May 25th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4. #include <string>
  5. #include <ctime>
  6. using namespace std;
  7.  
  8. struct combatant {
  9.     string name;
  10.     int hitpoints;
  11.     int weapon;
  12.     int dmg;
  13.     int strength;
  14.     int kills;
  15.     bool isDead;
  16.     string weaponName;
  17. };
  18.  
  19. string armory(int wep) {
  20.     switch(wep) {
  21.             case 1:
  22.                 return "a giant battle AXE";
  23.                 break;
  24.             case 2:
  25.                 return "a KATANA";
  26.                 break;
  27.             case 3:
  28.                 return "a FORK";
  29.                 break;
  30.             case 4:
  31.                 return "a comically large HAMMER";
  32.                 break;
  33.             case 5:
  34.                 return "a rubber DUCKY";
  35.                 break;
  36.             case 6:
  37.                 return "a simple kitchen KNIFE";
  38.                 break;
  39.             case 7:
  40.                 return "a spiked MACE";
  41.                 break;
  42.             case 8:
  43.                 return "a SPEAR";
  44.                 break;
  45.             case 9:
  46.                 return "a ZWEIHANDER";
  47.                 break;
  48.             case 10:
  49.                 return "a walrus's TOOTH";
  50.                 break;
  51.             case 11:
  52.                 return "a piece of BOLOGNA";
  53.                 break;
  54.             case 12:
  55.                 return "a pink LIGHT SABER";
  56.                 break;
  57.             case 13:
  58.                 return "the HOLY GRAIL";
  59.                 break;
  60.             case 14:
  61.                 return "a CHAINSAW";
  62.                 break;
  63.             case 15:
  64.                 return "a live SQUID";
  65.                 break;
  66.             case 16:
  67.                 return "a GLADIUS";
  68.                 break;
  69.             case 17:
  70.                 return "a pair of polka-dotted UNDERWEAR ";
  71.                 break;
  72.             case 18:
  73.                 return "a BRICK";
  74.                 break;
  75.             case 19:
  76.                 return "a trash can LID";
  77.                 break;
  78.             case 20:
  79.                 return "a pointy STICK";
  80.                 break;
  81.             default:
  82.                 return "nothing";
  83.                 break;
  84.         }
  85. };
  86.  
  87. int damage(int wep) {
  88.     switch(wep) {
  89.             case 1:
  90.                 return 10;
  91.                 break;
  92.             case 2:
  93.                 return 6;
  94.                 break;
  95.             case 3:
  96.                 return 2;
  97.                 break;
  98.             case 4:
  99.                 return 9;
  100.                 break;
  101.             case 5:
  102.                 return 1;
  103.                 break;
  104.             case 6:
  105.                 return 4;
  106.                 break;
  107.             case 7:
  108.                 return 5;
  109.                 break;
  110.             case 8:
  111.                 return 6;
  112.                 break;
  113.             case 9:
  114.                 return 7;
  115.                 break;
  116.             case 10:
  117.                 return 3;
  118.                 break;
  119.             case 11:
  120.                 return 1;
  121.                 break;
  122.             case 12:
  123.                 return 11;
  124.                 break;
  125.             case 13:
  126.                 return 5;
  127.                 break;
  128.             case 14:
  129.                 return 12;
  130.                 break;
  131.             case 15:
  132.                 return 4;
  133.                 break;
  134.             case 16:
  135.                 return 3;
  136.                 break;
  137.             case 17:
  138.                 return 2;
  139.                 break;
  140.             case 18:
  141.                 return 6;
  142.                 break;
  143.             case 19:
  144.                 return 2;
  145.                 break;
  146.             case 20:
  147.                 return 7;
  148.                 break;
  149.             default:
  150.                 return 0;
  151.                 break;
  152.         }
  153. };
  154.  
  155. string verbs (int verb) {
  156.     switch(verb) {
  157.             case 1:
  158.                 return " whacked ";
  159.                 break;
  160.             case 2:
  161.                 return " bludgeoned ";
  162.                 break;
  163.             case 3:
  164.                 return " smashed ";
  165.                 break;
  166.             case 4:
  167.                 return " pelted ";
  168.                 break;
  169.             case 5:
  170.                 return " smacked ";
  171.                 break;
  172.             case 6:
  173.                 return " mauled ";
  174.                 break;
  175.             case 7:
  176.                 return " cleaved ";
  177.                 break;
  178.             case 8:
  179.                 return " smacked ";
  180.                 break;
  181.             case 9:
  182.                 return " clobbered ";
  183.                 break;
  184.             case 10:
  185.                 return " stabbed ";
  186.                 break;
  187.             case 11:
  188.                 return " impaled ";
  189.                 break;
  190.             case 12:
  191.                 return " mangled ";
  192.                 break;
  193.             default:
  194.                 return 0;
  195.                 break;
  196.         }
  197. };
  198.  
  199. string anatomy (int part) {
  200.     switch(part) {
  201.             case 1:
  202.                 return " CLAVICLE";
  203.                 break;
  204.             case 2:
  205.                 return " KIDNEY";
  206.                 break;
  207.             case 3:
  208.                 return " EYEBALL";
  209.                 break;
  210.             case 4:
  211.                 return " MEDULLA OBLONGATA";
  212.                 break;
  213.             case 5:
  214.                 return " PANCREAS";
  215.                 break;
  216.             case 6:
  217.                 return " LIVER";
  218.                 break;
  219.             case 7:
  220.                 return " LUNG";
  221.                 break;
  222.             case 8:
  223.                 return " LUMBAR SPINE";
  224.                 break;
  225.             case 9:
  226.                 return " FEMORAL ARTERY";
  227.                 break;
  228.             case 10:
  229.                 return " TRACHEA";
  230.                 break;
  231.             case 11:
  232.                 return " TRAPEZIUS";
  233.                 break;
  234.             case 12:
  235.                 return " LARGE INTESTINE";
  236.                 break;
  237.             case 13:
  238.                 return " AORTA";
  239.                 break;
  240.             case 14:
  241.                 return " LEFT VENTRICLE";
  242.                 break;
  243.             case 15:
  244.                 return " BUTT";
  245.                 break;
  246.             case 16:
  247.                 return " STERNUM";
  248.                 break;
  249.             default:
  250.                 return 0;
  251.                 break;
  252.         }
  253. };
  254.  
  255. string namifier(int i) {
  256.     string name;
  257.     cout << "Enter the name of combatant number " << i + 1 << ": " << endl;
  258.     cin >> name;
  259.     return name;
  260. };
  261.  
  262. int hitpoints() {
  263.     int hitpoints = ((rand() % 100) + 100);
  264.     return hitpoints;
  265. }
  266.  
  267. int main() {
  268.     srand(static_cast<unsigned int>(time(0)));
  269.     int atkHits;
  270.     int noc;
  271.     int round = 1;
  272.     cout << "Enter number of combatants:" << endl;
  273.     cin >> noc;
  274.     int survivors = noc;
  275.     int turn = noc;
  276.  
  277.     fstream text;
  278.     text.open("battle.txt");
  279.  
  280.     combatant * fighters = new combatant[noc];
  281.  
  282.     for (int i = 0; i < noc; i++) {
  283.         int wep = ((rand() % 20) + 1);
  284.         fighters[i].name = namifier(i);
  285.         fighters[i].hitpoints = hitpoints();
  286.         do {
  287.             fighters[i].strength = ((rand() % 20) + 1);
  288.         } while (fighters[i].strength < 8);
  289.         fighters[i].weapon = wep;
  290.         fighters[i].isDead = false;
  291.         fighters[i].kills = 0;
  292.         text << i + 1 << ". " << fighters[i].name << " spawned with " <<
  293.             fighters[i].hitpoints << " HP and " << fighters[i].strength << " strength. " << endl;
  294.     }
  295.     text << endl << "LET THE GAMES BEGIN!" << endl << endl;
  296.     if (survivors == 1) {
  297.         text << fighters[0].name << " is the last combatant standing!" << endl;
  298.     }
  299.     while (survivors > 1) {
  300.         for (int i = 0; i < turn; i++) {        // Go through the list of fighters one-by-one.  i represents combatant's turn
  301.             for (int j = 0; j < noc; j++) {     // Go through list of targets.  j represents enemy combatants
  302.                 if ((fighters[i].name != fighters[j].name) && (fighters[i].isDead != true) && (fighters[j].isDead != true)) {
  303.                     atkHits = (rand() % 2);
  304.                     if (atkHits != 1) {
  305.                         text << round << ". " << fighters[i].name << " tried to attack " << fighters[j].name << ", but they were distracted by a WRENCH!" <<  endl;
  306.                         round++;
  307.                     }
  308.                     else if (atkHits == 1) {
  309.                         int wep = ((rand() % 20) + 1);
  310.                         fighters[i].weapon = wep;
  311.                         fighters[i].weaponName = armory(wep);
  312.                         fighters[i].dmg = damage(wep);
  313.                         int attack = ((fighters[i].strength) * ((rand() % fighters[i].dmg) + 1));
  314.                         int verb = ((rand() % 12) + 1);
  315.                         int part = ((rand() % 16) + 1);
  316.                         text << round << ". " << fighters[i].name << verbs(verb) <<
  317.                             fighters[j].name << " in the" << anatomy(part) << " with a WRENCH!"  << endl <<
  318.                             fighters[j].name << " took " << attack << " points of damage!" << endl;
  319.                         fighters[j].hitpoints -= attack;
  320.                         text << fighters[j].name << "'s remaining HP: " << fighters[j].hitpoints << endl;
  321.                         round++;
  322.                         if (fighters[j].hitpoints <= 0) {
  323.                             fighters[j].isDead = true;
  324.                             fighters[i].kills++;
  325.                             survivors--;
  326.                             text << "------< " << fighters[i].name << " killed " << fighters[j].name << "! >------" << endl;
  327.                         }
  328.                         if (survivors == 1) {
  329.                             text << fighters[i].name << " is the last combatant standing!" << endl << endl;
  330.                             text << "   SCOREBOARD" << endl;
  331.                             bool sorted = false;
  332.                             while (!sorted) {
  333.                                 sorted = true;
  334.                                 for (int i = 0; i != noc - 1; i++) {
  335.                                     if (fighters[i].kills < fighters[i + 1].kills) {
  336.                                         combatant temp = fighters[i];
  337.                                         fighters[i] = fighters[i+1];
  338.                                         fighters[i+1] = temp;
  339.                                         sorted = false;
  340.                                     }
  341.                                 }
  342.                             }
  343.                             for (int i = 0; i < noc; i++) {
  344.                                 if (fighters[i].isDead == false) {
  345.                                     text << i + 1 << ". " << fighters[i].name << ": " << fighters[i].kills << " kills (SURVIVOR!)" << endl;
  346.                                 }
  347.                                 else {
  348.                                     text << i + 1 << ". " << fighters[i].name << ": " << fighters[i].kills << " kills" << endl;
  349.                                 }
  350.                             }
  351.                         }
  352.                     }
  353.                 }      
  354.             }
  355.         }
  356.     }
  357.     text.close();
  358. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement