Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- #include <string>
- #include <ctime>
- using namespace std;
- struct combatant {
- string name;
- int hitpoints;
- int weapon;
- int dmg;
- int strength;
- int kills;
- bool isDead;
- string weaponName;
- };
- string armory(int wep) {
- switch(wep) {
- case 1:
- return "a giant battle AXE";
- break;
- case 2:
- return "a KATANA";
- break;
- case 3:
- return "a FORK";
- break;
- case 4:
- return "a comically large HAMMER";
- break;
- case 5:
- return "a rubber DUCKY";
- break;
- case 6:
- return "a simple kitchen KNIFE";
- break;
- case 7:
- return "a spiked MACE";
- break;
- case 8:
- return "a SPEAR";
- break;
- case 9:
- return "a ZWEIHANDER";
- break;
- case 10:
- return "a walrus's TOOTH";
- break;
- case 11:
- return "a piece of BOLOGNA";
- break;
- case 12:
- return "a pink LIGHT SABER";
- break;
- case 13:
- return "the HOLY GRAIL";
- break;
- case 14:
- return "a CHAINSAW";
- break;
- case 15:
- return "a live SQUID";
- break;
- case 16:
- return "a GLADIUS";
- break;
- case 17:
- return "a pair of polka-dotted UNDERWEAR ";
- break;
- case 18:
- return "a BRICK";
- break;
- case 19:
- return "a trash can LID";
- break;
- case 20:
- return "a pointy STICK";
- break;
- default:
- return "nothing";
- break;
- }
- };
- int damage(int wep) {
- switch(wep) {
- case 1:
- return 10;
- break;
- case 2:
- return 6;
- break;
- case 3:
- return 2;
- break;
- case 4:
- return 9;
- break;
- case 5:
- return 1;
- break;
- case 6:
- return 4;
- break;
- case 7:
- return 5;
- break;
- case 8:
- return 6;
- break;
- case 9:
- return 7;
- break;
- case 10:
- return 3;
- break;
- case 11:
- return 1;
- break;
- case 12:
- return 11;
- break;
- case 13:
- return 5;
- break;
- case 14:
- return 12;
- break;
- case 15:
- return 4;
- break;
- case 16:
- return 3;
- break;
- case 17:
- return 2;
- break;
- case 18:
- return 6;
- break;
- case 19:
- return 2;
- break;
- case 20:
- return 7;
- break;
- default:
- return 0;
- break;
- }
- };
- string verbs (int verb) {
- switch(verb) {
- case 1:
- return " whacked ";
- break;
- case 2:
- return " bludgeoned ";
- break;
- case 3:
- return " smashed ";
- break;
- case 4:
- return " pelted ";
- break;
- case 5:
- return " smacked ";
- break;
- case 6:
- return " mauled ";
- break;
- case 7:
- return " cleaved ";
- break;
- case 8:
- return " smacked ";
- break;
- case 9:
- return " clobbered ";
- break;
- case 10:
- return " stabbed ";
- break;
- case 11:
- return " impaled ";
- break;
- case 12:
- return " mangled ";
- break;
- default:
- return 0;
- break;
- }
- };
- string anatomy (int part) {
- switch(part) {
- case 1:
- return " CLAVICLE";
- break;
- case 2:
- return " KIDNEY";
- break;
- case 3:
- return " EYEBALL";
- break;
- case 4:
- return " MEDULLA OBLONGATA";
- break;
- case 5:
- return " PANCREAS";
- break;
- case 6:
- return " LIVER";
- break;
- case 7:
- return " LUNG";
- break;
- case 8:
- return " LUMBAR SPINE";
- break;
- case 9:
- return " FEMORAL ARTERY";
- break;
- case 10:
- return " TRACHEA";
- break;
- case 11:
- return " TRAPEZIUS";
- break;
- case 12:
- return " LARGE INTESTINE";
- break;
- case 13:
- return " AORTA";
- break;
- case 14:
- return " LEFT VENTRICLE";
- break;
- case 15:
- return " BUTT";
- break;
- case 16:
- return " STERNUM";
- break;
- default:
- return 0;
- break;
- }
- };
- string namifier(int i) {
- string name;
- cout << "Enter the name of combatant number " << i + 1 << ": " << endl;
- cin >> name;
- return name;
- };
- int hitpoints() {
- int hitpoints = ((rand() % 100) + 100);
- return hitpoints;
- }
- int main() {
- srand(static_cast<unsigned int>(time(0)));
- int atkHits;
- int noc;
- int round = 1;
- cout << "Enter number of combatants:" << endl;
- cin >> noc;
- int survivors = noc;
- int turn = noc;
- fstream text;
- text.open("battle.txt");
- combatant * fighters = new combatant[noc];
- for (int i = 0; i < noc; i++) {
- int wep = ((rand() % 20) + 1);
- fighters[i].name = namifier(i);
- fighters[i].hitpoints = hitpoints();
- do {
- fighters[i].strength = ((rand() % 20) + 1);
- } while (fighters[i].strength < 8);
- fighters[i].weapon = wep;
- fighters[i].isDead = false;
- fighters[i].kills = 0;
- text << i + 1 << ". " << fighters[i].name << " spawned with " <<
- fighters[i].hitpoints << " HP and " << fighters[i].strength << " strength. " << endl;
- }
- text << endl << "LET THE GAMES BEGIN!" << endl << endl;
- if (survivors == 1) {
- text << fighters[0].name << " is the last combatant standing!" << endl;
- }
- while (survivors > 1) {
- for (int i = 0; i < turn; i++) { // Go through the list of fighters one-by-one. i represents combatant's turn
- for (int j = 0; j < noc; j++) { // Go through list of targets. j represents enemy combatants
- if ((fighters[i].name != fighters[j].name) && (fighters[i].isDead != true) && (fighters[j].isDead != true)) {
- atkHits = (rand() % 2);
- if (atkHits != 1) {
- text << round << ". " << fighters[i].name << " tried to attack " << fighters[j].name << ", but they were distracted by a WRENCH!" << endl;
- round++;
- }
- else if (atkHits == 1) {
- int wep = ((rand() % 20) + 1);
- fighters[i].weapon = wep;
- fighters[i].weaponName = armory(wep);
- fighters[i].dmg = damage(wep);
- int attack = ((fighters[i].strength) * ((rand() % fighters[i].dmg) + 1));
- int verb = ((rand() % 12) + 1);
- int part = ((rand() % 16) + 1);
- text << round << ". " << fighters[i].name << verbs(verb) <<
- fighters[j].name << " in the" << anatomy(part) << " with a WRENCH!" << endl <<
- fighters[j].name << " took " << attack << " points of damage!" << endl;
- fighters[j].hitpoints -= attack;
- text << fighters[j].name << "'s remaining HP: " << fighters[j].hitpoints << endl;
- round++;
- if (fighters[j].hitpoints <= 0) {
- fighters[j].isDead = true;
- fighters[i].kills++;
- survivors--;
- text << "------< " << fighters[i].name << " killed " << fighters[j].name << "! >------" << endl;
- }
- if (survivors == 1) {
- text << fighters[i].name << " is the last combatant standing!" << endl << endl;
- text << " SCOREBOARD" << endl;
- bool sorted = false;
- while (!sorted) {
- sorted = true;
- for (int i = 0; i != noc - 1; i++) {
- if (fighters[i].kills < fighters[i + 1].kills) {
- combatant temp = fighters[i];
- fighters[i] = fighters[i+1];
- fighters[i+1] = temp;
- sorted = false;
- }
- }
- }
- for (int i = 0; i < noc; i++) {
- if (fighters[i].isDead == false) {
- text << i + 1 << ". " << fighters[i].name << ": " << fighters[i].kills << " kills (SURVIVOR!)" << endl;
- }
- else {
- text << i + 1 << ". " << fighters[i].name << ": " << fighters[i].kills << " kills" << endl;
- }
- }
- }
- }
- }
- }
- }
- }
- text.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement