Zexanima

main.cpp

Sep 29th, 2011
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <fstream>
  4. #include <windows.h>
  5. #include "Player.h"
  6. #include "Imp.h"
  7.  
  8. int rand0toN(int n);
  9. void spoils();
  10. int Damage(int s, int m);
  11. void fm();
  12. void ImpLvl();
  13. void fight();
  14. void hunt();
  15.  
  16. Player Ob1; // Class Player object
  17. Imp Ob2;//Class Imp object
  18. int Menu = 0;
  19.  
  20. using namespace std;
  21.  
  22. int main(){
  23.  
  24.     srand(time(NULL));//Seed for randomization
  25.  
  26.     ofstream S;
  27.     S.open("SAVE.bin", ios::binary | ios::out);
  28.      if(!S){
  29.     cout << "No save file dectected. Creating save.";
  30.  
  31.     }
  32.     S.close();
  33.  
  34.  while (true){
  35.  
  36.     //Game start Menu. (Look at the awesome imp face)
  37.     if (Menu == 0){
  38.         cout << "^^^^^*****--- IMP HUNTER 1.0 ---*****^^^^^\n";
  39.         cout << "          ^                   ^\n";
  40.         cout << "        /   \\              /   \\ \n";
  41.         cout << "       |      _-----------_     |\n";
  42.         cout << "       |                        |\n";
  43.         cout << "       |     ___        ___     |\n";
  44.         cout << "       |      U          U      |\n";
  45.         cout << "       |            A           |\n";
  46.         cout << "       \\        __________     /\n";
  47.         cout << "         \\               V    /\n";
  48.         cout << "           --------------------\n";
  49.         cout << "Welcome to Imp Hunter! A simple game, programed in C++.\n";
  50.         cout << "What would you like to do? Enter Choice.\n";
  51.         cout << "0 - Menu\n";
  52.         cout << "1 - New Character WARNING! Deletes old character!\n";
  53.         cout << "2 - Load Character\n";
  54.         cout << "3 - Exit\n";
  55.         cout << "Choice: ";
  56.         cin >> Menu;
  57.  
  58. }
  59.  
  60.         //Character class selection menu.
  61.     if (Menu == 1){
  62.  
  63.         int cls;
  64.         Ob1.set(0,0,0,0,0,0,0);
  65.         cout << "---Choose your class---\n";
  66.         cout << "1 - Elf:\n";
  67.         cout << "Strength: 3\n";
  68.         cout << "Defense: 3\n";
  69.         cout << "Agility: 5\n\n";
  70.         cout << "2 - Dwarf:\n";
  71.         cout << "Strength: 3\n";
  72.         cout << "Defense: 5\n";
  73.         cout << "Agility: 3\n\n";
  74.         cout << "3 - Human:\n";
  75.         cout << "Strength: 5\n";
  76.         cout << "Defense: 3\n";
  77.         cout << "Agility: 3\n\n";
  78.         cout << "Class? ";
  79.         cin >> cls;
  80.  
  81.             switch(cls){
  82.                 case 1:
  83.                     Ob1.IncrStat(3,3,5,50,0,0,1);
  84.                     Ob1.save();
  85.                     Menu = 5;
  86.                         break;
  87.                 case 2:
  88.                     Ob1.IncrStat(3,5,3,50,0,0,1);
  89.                     Ob1.save();
  90.                     Menu = 5;
  91.                         break;
  92.                 case 3:
  93.                     Ob1.IncrStat(5,3,3,50,0,0,1);
  94.                     Ob1.save();
  95.                     Menu = 5;
  96.                         break;
  97.                 default: break;
  98.             }
  99.  
  100.  
  101.     }
  102.  
  103.     //Load game option
  104.     if(Menu == 2){
  105.  
  106.         cout << "Loading...\n";
  107.         Ob1.load();
  108.         Menu = 5;
  109.  
  110.     }
  111.  
  112.     if (Menu == 3){
  113.  
  114.         return false;
  115.  
  116.     }
  117.  
  118.     //Save game option
  119.     if(Menu == 4){
  120.  
  121.     cout << "Saving...\n";
  122.     Ob1.save();
  123.     Menu = 5;
  124.  
  125.  
  126.  
  127.     }
  128.         // Imp forest menu. Player can fight or check stats or heal ect..
  129.     if(Menu == 5){
  130.  
  131.         int cho;
  132.         cout << "----Imp Forest----\n";
  133.         cout << "0 - Menu\n";
  134.         cout << "1 - HUNT!\n";
  135.         cout << "2 - Save\n";
  136.         cout << "3 - View Stats\n";
  137.         cout << "4 - Wait and heal(Cost 20 gold)\n";
  138.         cout << "5 - Exit game and save\n";
  139.         cout << "Choice? ";
  140.         cin >> cho;
  141.  
  142.         switch(cho){
  143.             case 0:
  144.                 Menu = 0;
  145.                 break;
  146.             case 1:
  147.                 hunt();
  148.                 if (Ob1.get_Exp() > 100)
  149.                     Menu = 6;
  150.                 break;
  151.             case 2:
  152.                 Menu = 4;
  153.                 break;
  154.             case 3:
  155.                 cout << "\n\n";
  156.                 cout << "-v-^-v- Your Stats -v-^-v-\n";
  157.                 cout << "Level: " << Ob1.get_Lvl() << endl;
  158.                 cout << "Health: " << Ob1.get_Health() << endl;
  159.                 cout << "Strength: " << Ob1.get_Strg() << endl;
  160.                 cout << "Defense: " << Ob1.get_Def() << endl;
  161.                 cout << "Agility: " << Ob1.get_Agil() << endl;
  162.                 cout << "Experience: " << Ob1.get_Exp() << endl;
  163.                 cout << "Gold: " << Ob1.get_Gold() << endl;
  164.                 cout << "\n\n";
  165.                 Menu = 5;
  166.                 break;
  167.             case 4:
  168.                 if(Ob1.get_Gold()<20){
  169.                     cout << "You don't have enough! Gold: " << Ob1.get_Gold() << endl;
  170.                 }else{
  171.                 Ob1.DecrStat(0,0,0,0,0,20,0);
  172.                 cout << "What a nice rest, you're fully healed!\n";
  173.                 Ob1.set_h();
  174.                 Menu = 5;
  175.                 }
  176.                 break;
  177.             case 5:
  178.                 Ob1.save();
  179.                 Menu = 3;
  180.                 break;
  181.  
  182.             default:
  183.                 break;
  184.  
  185.  
  186.  
  187.         }
  188.     }
  189.  
  190.     //Level up menu.
  191.     if (Menu == 6){
  192.         int choice;
  193.         cout << "***** You have reached a new level! *****\n\n";
  194.         for (int i = 3;i>0;i--){
  195.             cout << "You have " << i << " points left.\n";
  196.             cout << "1 - Strength\n";
  197.             cout << "2 - Defense\n";
  198.             cout << "3 - Agility\n";
  199.             cin >> choice;
  200.             switch(choice){
  201.  
  202.                     case 1:
  203.                         Ob1.IncrStat(1,0,0,0,0,0,0);
  204.                         break;
  205.                     case 2:
  206.                         Ob1.IncrStat(0,1,0,0,0,0,0);
  207.                         break;
  208.                     case 3:
  209.                         Ob2.IncrStat(0,0,1,0,0,0,0);
  210.                         break;
  211.                     default:
  212.                         break;
  213.  
  214.  
  215.             }
  216.             Menu = 5;
  217.  
  218.  
  219.         }
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.     }
  228.  }
  229.  
  230.  
  231. system("pause");
  232. return 0;
  233. }
  234.  // Random Number function...
  235. int rand0toN(int n){
  236.  
  237.     n = (rand()%n)+1;
  238.     return n;
  239.  
  240. }
  241. //Function that preforms "HUNT!"
  242. void hunt(){
  243.  
  244.     int h = rand0toN(3);
  245.     switch(h){
  246.  
  247.     case 1:
  248.         cout << "You trip and bust your face! -1 Health.\n";
  249.         Ob1.DecrStat(0,0,0,1,0,0,0);
  250.             break;
  251.     case 2:
  252.         cout << "You find a nasty little imp! Twart him!\n\n";
  253.         fight();
  254.         break;
  255.     case 3:
  256.         cout << "Ooo, a pot of gold! It has 5 gold!\n";
  257.         Ob1.IncrStat(0,0,0,0,0,5,0);
  258.         break;
  259.     default:
  260.         break;
  261.  
  262.     }
  263.  
  264. }
  265. //Fighting function
  266. void fight(){
  267.  
  268.     while(true){
  269.  
  270.     int op;
  271.     ImpLvl();
  272.     int fL = rand0toN(2);
  273.     cout << "@@@@@@----- Fight Mode -----@@@@@@\n";
  274.     cout << "1 - Your Stats\n";
  275.     cout << "2 - Imp Stats\n";
  276.     cout << "3 - Fight!\n";
  277.     cout << "4 - Try to flee!\n";
  278.     cin >> op;
  279.  
  280.     switch(op){
  281.  
  282.         case 1:
  283.             cout << "\n\n";
  284.                 cout << "-v-^-v- Your Stats -v-^-v-\n";
  285.                 cout << "Level: " << Ob1.get_Lvl() << endl;
  286.                 cout << "Health: " << Ob1.get_Health() << endl;
  287.                 cout << "Strength: " << Ob1.get_Strg() << endl;
  288.                 cout << "Defense: " << Ob1.get_Def() << endl;
  289.                 cout << "Agility: " << Ob1.get_Agil() << endl;
  290.                 cout << "Experience: " << Ob1.get_Exp() << endl;
  291.                 cout << "Gold: " << Ob1.get_Gold() << endl;
  292.                 cout << "\n\n";
  293.                 break;
  294.         case 2:
  295.             cout << "\n\n";
  296.                 cout << "++++++ Imp Stats ++++++";
  297.                 cout << "Level: " << Ob2.get_Lvl() << endl;
  298.                 cout << "Health: " << Ob2.get_Health() << endl;
  299.                 cout << "Strength: " << Ob2.get_Strg() << endl;
  300.                 cout << "Defense: " << Ob2.get_Def() << endl;
  301.                 cout << "Agility: " << Ob2.get_Agil() << endl;
  302.                 cout << "Experience: " << Ob2.get_Exp() << endl;
  303.                 cout << "Gold: " << Ob2.get_Gold() << endl;
  304.                 cout << "\n\n";
  305.                 break;
  306.         case 3:
  307.             fm();
  308.             if(Ob1.get_Health()<=0){
  309.  
  310.                 cout << "~~~~Game Over: You are dead~~~~~\n";
  311.                 Ob1.set(0,0,0,0,0,0,0);
  312.                 Menu = 5;
  313.             }
  314.             if(Ob2.get_Health()<=0){
  315.  
  316.                 cout << "^^^^^^You Won!^^^^^^\n";
  317.                 spoils();
  318.                 Menu = 1;
  319.             }
  320.             break;
  321.         case 4:
  322.                 if (fL =1){
  323.                     cout << "You fled safely!\n";
  324.                     Menu = 5;
  325.                     break;
  326.  
  327.                 }
  328.                 if (fL =2){
  329.                     cout <<"You weren't fast enough!\n";
  330.                                 fm();
  331.                     if(Ob1.get_Health()<=0){}
  332.  
  333.                             cout << "~~~~Game Over: You are dead~~~~~\n";
  334.                             Ob1.set(0,0,0,0,0,0,0);
  335.                             Menu = 1;
  336.                 }
  337.                     if(Ob2.get_Health()<=0){
  338.  
  339.                 cout << "^^^^^^You Won!^^^^^^";
  340.                     spoils();
  341.                     Menu = 5;
  342.                 }
  343.                 break;
  344.  
  345.         default:
  346.             break;
  347.                 }
  348.  
  349.             }
  350.         }
  351. //Randomly generats an imp to fight.
  352. void ImpLvl(){
  353.  
  354.     int lvl, s = 0, d = 0, a = 0, h = 0, e = 0, g = 0;
  355.     Ob2.set(0,0,0,0,0,0,0);
  356.     lvl = rand0toN(Ob1.get_Lvl()) + rand0toN(2);
  357.     Ob2.set_level(lvl);
  358.     s = Ob2.get_Lvl() + rand0toN(1);
  359.     d = Ob2.get_Lvl() + rand0toN(2);
  360.     a = Ob2.get_Lvl() + rand0toN(3);
  361.     h = Ob2.get_Lvl() + rand0toN(15);
  362.     e = Ob2.get_Lvl() + rand0toN(20);
  363.     g = Ob2.get_Lvl() + rand0toN(12);
  364.     Ob2.IncrStat(s,d,a,h,e,g,0);
  365.  
  366.  
  367.  
  368. }
  369. // Fight mechanics
  370. void fm(){
  371.  
  372.  
  373. int p = 0;
  374. int D = 0;
  375. while (Ob1.get_Health()>0 && Ob2.get_Health()>0){
  376. if (Ob1.get_Health()>0){
  377.  
  378. cout << "---Your turn\n";
  379. cout << "Enter attack strength.(More power, more damage, more likely to miss)\n";
  380. cin >> p;
  381. p += (Ob1.get_Agil()/2);
  382. p = rand0toN(p);
  383.  
  384. if (p>=7){
  385.     int c = rand0toN(2);
  386.         if(c=1){
  387.             cout << "You swung so hard you missed!\n";
  388.         }
  389.         if (c>1){
  390.             cout << "You delt a HEAVY blow!\n";
  391.             D = Damage(Ob1.get_Strg(),p) - (Ob2.get_Def()/3);
  392.             Ob2.lose_h(D);
  393.             cout << "You did " << D << " damage.\n";
  394.             D = 0;
  395.  
  396.         }
  397.  
  398. }
  399.  
  400. if (p<7){
  401.  
  402.     D = Damage(Ob1.get_Strg(),0);
  403.             Ob2.lose_h(D);
  404.             cout << "You did " << D << " damage.\n";
  405.             D = 0;
  406.  
  407.     }
  408. }
  409.  
  410.  
  411. if (Ob2.get_Health()>0){
  412. cout << "Imp's turn-------\n";
  413.  
  414.     D = Damage(Ob2.get_Strg(),1) - (Ob1.get_Def()/3);
  415.             Ob1.lose_h(D);
  416.             cout << "The Imp did " << D << " damage.\n";
  417.             D = 0;
  418.         }
  419.     }
  420. }
  421.  
  422. int Damage(int s, int m){
  423.  
  424.     int Dmg = (s/2) + m;
  425.     return Dmg;
  426. }
  427.  
  428. void spoils(){
  429.     int ex = Ob2.get_Exp(), gl = Ob2.get_Gold();
  430.     Ob1.IncrStat(0,0,0,0,ex,gl,0);
  431.  
  432. }
  433.  
  434.  
  435.  
Advertisement
Add Comment
Please, Sign In to add comment