Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <fstream>
- #include <windows.h>
- #include "Player.h"
- #include "Imp.h"
- int rand0toN(int n);
- void spoils();
- int Damage(int s, int m);
- void fm();
- void ImpLvl();
- void fight();
- void hunt();
- Player Ob1; // Class Player object
- Imp Ob2;//Class Imp object
- int Menu = 0;
- using namespace std;
- int main(){
- srand(time(NULL));//Seed for randomization
- ofstream S;
- S.open("SAVE.bin", ios::binary | ios::out);
- if(!S){
- cout << "No save file dectected. Creating save.";
- }
- S.close();
- while (true){
- //Game start Menu. (Look at the awesome imp face)
- if (Menu == 0){
- cout << "^^^^^*****--- IMP HUNTER 1.0 ---*****^^^^^\n";
- cout << " ^ ^\n";
- cout << " / \\ / \\ \n";
- cout << " | _-----------_ |\n";
- cout << " | |\n";
- cout << " | ___ ___ |\n";
- cout << " | U U |\n";
- cout << " | A |\n";
- cout << " \\ __________ /\n";
- cout << " \\ V /\n";
- cout << " --------------------\n";
- cout << "Welcome to Imp Hunter! A simple game, programed in C++.\n";
- cout << "What would you like to do? Enter Choice.\n";
- cout << "0 - Menu\n";
- cout << "1 - New Character WARNING! Deletes old character!\n";
- cout << "2 - Load Character\n";
- cout << "3 - Exit\n";
- cout << "Choice: ";
- cin >> Menu;
- }
- //Character class selection menu.
- if (Menu == 1){
- int cls;
- Ob1.set(0,0,0,0,0,0,0);
- cout << "---Choose your class---\n";
- cout << "1 - Elf:\n";
- cout << "Strength: 3\n";
- cout << "Defense: 3\n";
- cout << "Agility: 5\n\n";
- cout << "2 - Dwarf:\n";
- cout << "Strength: 3\n";
- cout << "Defense: 5\n";
- cout << "Agility: 3\n\n";
- cout << "3 - Human:\n";
- cout << "Strength: 5\n";
- cout << "Defense: 3\n";
- cout << "Agility: 3\n\n";
- cout << "Class? ";
- cin >> cls;
- switch(cls){
- case 1:
- Ob1.IncrStat(3,3,5,50,0,0,1);
- Ob1.save();
- Menu = 5;
- break;
- case 2:
- Ob1.IncrStat(3,5,3,50,0,0,1);
- Ob1.save();
- Menu = 5;
- break;
- case 3:
- Ob1.IncrStat(5,3,3,50,0,0,1);
- Ob1.save();
- Menu = 5;
- break;
- default: break;
- }
- }
- //Load game option
- if(Menu == 2){
- cout << "Loading...\n";
- Ob1.load();
- Menu = 5;
- }
- if (Menu == 3){
- return false;
- }
- //Save game option
- if(Menu == 4){
- cout << "Saving...\n";
- Ob1.save();
- Menu = 5;
- }
- // Imp forest menu. Player can fight or check stats or heal ect..
- if(Menu == 5){
- int cho;
- cout << "----Imp Forest----\n";
- cout << "0 - Menu\n";
- cout << "1 - HUNT!\n";
- cout << "2 - Save\n";
- cout << "3 - View Stats\n";
- cout << "4 - Wait and heal(Cost 20 gold)\n";
- cout << "5 - Exit game and save\n";
- cout << "Choice? ";
- cin >> cho;
- switch(cho){
- case 0:
- Menu = 0;
- break;
- case 1:
- hunt();
- if (Ob1.get_Exp() > 100)
- Menu = 6;
- break;
- case 2:
- Menu = 4;
- break;
- case 3:
- cout << "\n\n";
- cout << "-v-^-v- Your Stats -v-^-v-\n";
- cout << "Level: " << Ob1.get_Lvl() << endl;
- cout << "Health: " << Ob1.get_Health() << endl;
- cout << "Strength: " << Ob1.get_Strg() << endl;
- cout << "Defense: " << Ob1.get_Def() << endl;
- cout << "Agility: " << Ob1.get_Agil() << endl;
- cout << "Experience: " << Ob1.get_Exp() << endl;
- cout << "Gold: " << Ob1.get_Gold() << endl;
- cout << "\n\n";
- Menu = 5;
- break;
- case 4:
- if(Ob1.get_Gold()<20){
- cout << "You don't have enough! Gold: " << Ob1.get_Gold() << endl;
- }else{
- Ob1.DecrStat(0,0,0,0,0,20,0);
- cout << "What a nice rest, you're fully healed!\n";
- Ob1.set_h();
- Menu = 5;
- }
- break;
- case 5:
- Ob1.save();
- Menu = 3;
- break;
- default:
- break;
- }
- }
- //Level up menu.
- if (Menu == 6){
- int choice;
- cout << "***** You have reached a new level! *****\n\n";
- for (int i = 3;i>0;i--){
- cout << "You have " << i << " points left.\n";
- cout << "1 - Strength\n";
- cout << "2 - Defense\n";
- cout << "3 - Agility\n";
- cin >> choice;
- switch(choice){
- case 1:
- Ob1.IncrStat(1,0,0,0,0,0,0);
- break;
- case 2:
- Ob1.IncrStat(0,1,0,0,0,0,0);
- break;
- case 3:
- Ob2.IncrStat(0,0,1,0,0,0,0);
- break;
- default:
- break;
- }
- Menu = 5;
- }
- }
- }
- system("pause");
- return 0;
- }
- // Random Number function...
- int rand0toN(int n){
- n = (rand()%n)+1;
- return n;
- }
- //Function that preforms "HUNT!"
- void hunt(){
- int h = rand0toN(3);
- switch(h){
- case 1:
- cout << "You trip and bust your face! -1 Health.\n";
- Ob1.DecrStat(0,0,0,1,0,0,0);
- break;
- case 2:
- cout << "You find a nasty little imp! Twart him!\n\n";
- fight();
- break;
- case 3:
- cout << "Ooo, a pot of gold! It has 5 gold!\n";
- Ob1.IncrStat(0,0,0,0,0,5,0);
- break;
- default:
- break;
- }
- }
- //Fighting function
- void fight(){
- while(true){
- int op;
- ImpLvl();
- int fL = rand0toN(2);
- cout << "@@@@@@----- Fight Mode -----@@@@@@\n";
- cout << "1 - Your Stats\n";
- cout << "2 - Imp Stats\n";
- cout << "3 - Fight!\n";
- cout << "4 - Try to flee!\n";
- cin >> op;
- switch(op){
- case 1:
- cout << "\n\n";
- cout << "-v-^-v- Your Stats -v-^-v-\n";
- cout << "Level: " << Ob1.get_Lvl() << endl;
- cout << "Health: " << Ob1.get_Health() << endl;
- cout << "Strength: " << Ob1.get_Strg() << endl;
- cout << "Defense: " << Ob1.get_Def() << endl;
- cout << "Agility: " << Ob1.get_Agil() << endl;
- cout << "Experience: " << Ob1.get_Exp() << endl;
- cout << "Gold: " << Ob1.get_Gold() << endl;
- cout << "\n\n";
- break;
- case 2:
- cout << "\n\n";
- cout << "++++++ Imp Stats ++++++";
- cout << "Level: " << Ob2.get_Lvl() << endl;
- cout << "Health: " << Ob2.get_Health() << endl;
- cout << "Strength: " << Ob2.get_Strg() << endl;
- cout << "Defense: " << Ob2.get_Def() << endl;
- cout << "Agility: " << Ob2.get_Agil() << endl;
- cout << "Experience: " << Ob2.get_Exp() << endl;
- cout << "Gold: " << Ob2.get_Gold() << endl;
- cout << "\n\n";
- break;
- case 3:
- fm();
- if(Ob1.get_Health()<=0){
- cout << "~~~~Game Over: You are dead~~~~~\n";
- Ob1.set(0,0,0,0,0,0,0);
- Menu = 5;
- }
- if(Ob2.get_Health()<=0){
- cout << "^^^^^^You Won!^^^^^^\n";
- spoils();
- Menu = 1;
- }
- break;
- case 4:
- if (fL =1){
- cout << "You fled safely!\n";
- Menu = 5;
- break;
- }
- if (fL =2){
- cout <<"You weren't fast enough!\n";
- fm();
- if(Ob1.get_Health()<=0){}
- cout << "~~~~Game Over: You are dead~~~~~\n";
- Ob1.set(0,0,0,0,0,0,0);
- Menu = 1;
- }
- if(Ob2.get_Health()<=0){
- cout << "^^^^^^You Won!^^^^^^";
- spoils();
- Menu = 5;
- }
- break;
- default:
- break;
- }
- }
- }
- //Randomly generats an imp to fight.
- void ImpLvl(){
- int lvl, s = 0, d = 0, a = 0, h = 0, e = 0, g = 0;
- Ob2.set(0,0,0,0,0,0,0);
- lvl = rand0toN(Ob1.get_Lvl()) + rand0toN(2);
- Ob2.set_level(lvl);
- s = Ob2.get_Lvl() + rand0toN(1);
- d = Ob2.get_Lvl() + rand0toN(2);
- a = Ob2.get_Lvl() + rand0toN(3);
- h = Ob2.get_Lvl() + rand0toN(15);
- e = Ob2.get_Lvl() + rand0toN(20);
- g = Ob2.get_Lvl() + rand0toN(12);
- Ob2.IncrStat(s,d,a,h,e,g,0);
- }
- // Fight mechanics
- void fm(){
- int p = 0;
- int D = 0;
- while (Ob1.get_Health()>0 && Ob2.get_Health()>0){
- if (Ob1.get_Health()>0){
- cout << "---Your turn\n";
- cout << "Enter attack strength.(More power, more damage, more likely to miss)\n";
- cin >> p;
- p += (Ob1.get_Agil()/2);
- p = rand0toN(p);
- if (p>=7){
- int c = rand0toN(2);
- if(c=1){
- cout << "You swung so hard you missed!\n";
- }
- if (c>1){
- cout << "You delt a HEAVY blow!\n";
- D = Damage(Ob1.get_Strg(),p) - (Ob2.get_Def()/3);
- Ob2.lose_h(D);
- cout << "You did " << D << " damage.\n";
- D = 0;
- }
- }
- if (p<7){
- D = Damage(Ob1.get_Strg(),0);
- Ob2.lose_h(D);
- cout << "You did " << D << " damage.\n";
- D = 0;
- }
- }
- if (Ob2.get_Health()>0){
- cout << "Imp's turn-------\n";
- D = Damage(Ob2.get_Strg(),1) - (Ob1.get_Def()/3);
- Ob1.lose_h(D);
- cout << "The Imp did " << D << " damage.\n";
- D = 0;
- }
- }
- }
- int Damage(int s, int m){
- int Dmg = (s/2) + m;
- return Dmg;
- }
- void spoils(){
- int ex = Ob2.get_Exp(), gl = Ob2.get_Gold();
- Ob1.IncrStat(0,0,0,0,ex,gl,0);
- }
Advertisement
Add Comment
Please, Sign In to add comment