//=======================
// main.cpp
// 添加一个随机函数,使得游戏中随机出现三个设定好的角色
//=======================
// main function for the RPG style game
//主要功能为RPG游戏风格
#include <iostream>
#include <string>
using namespace std;
#include "swordsman.h"
#include"archer.h"
#include"mage.h"
int main()
{
string tempName;
bool success=0; //flag for storing whether operation is successful
//标志用于存储操作是否成功
cout <<"Please input player's name: ";
cin>>tempName; // get player's name from keyboard input
//从键盘输入得到玩家的名字
player *human; // use pointer of base class, convenience for polymorphism
//使用基类的指针,方便多态性
int tempJob; // temp choice for job selection
//临时工作选择的选择
do
{
cout <<"Please choose a job: 1 Swordsman, 2 Archer, 3 Mage"<<endl;
cin>>tempJob; //剑客 弓箭手 法师
system("cls"); // clear the screen清除屏幕
switch(tempJob)
{
case 1:
human=new swordsman(1,tempName); // create the character with user inputted name and job
//创建角色与用户输入的姓名和工作
success=1; // operation succeed操作成功
break;
case 2:
human=new archer(1,tempName); // create the character with user inputted name and job
//创建角色与用户输入的姓名和工作
success=1; // operation succeed操作成功
break;
case 3:
human=new mage(1,tempName); // create the character with user inputted name and job
//创建角色与用户输入的姓名和工作
success=1; // operation succeed操作成功
break;
default:
break; // In this case, success=0, character creation failed
//在这种情况下,成功= 0,人物创建失败了
}
}while(success!=1); // so the loop will ask user to re-create a character
//因此,循环将要求用户重新创建一个角色
int tempCom; // temp command inputted by user临时命令由用户输入
int nOpp=0; // the Nth opponent第n个对手
for(int i=1;nOpp<5;i+=2) // i is opponent's level 是对手的水平
{srand(0);
for( int i = 0; i < 10; i++)
{
cout<<rand()<<' ';
}
nOpp++;
system("cls");
cout<<"STAGE" <<nOpp<<endl;
cout<<"Your opponent, a Level "<<i<<" Swordsman."<<endl;
system("pause");
swordsman enemy(i, "Warrior"); // Initialise an opponent, level i, name "Junior"
//初始化一个对手,i 水平,name“初级”
human->reFill(); // get HP/MP refill before start fight战斗之前补充血量和蓝
while(!human->death() && !enemy.death()) // no died没死
{
success=0;
while (success!=1)
{
showinfo(*human,enemy); // show fighter's information显示战士信息
cout<<"Please give command: "<<endl;
cout<<"1 Attack; 2 Special Attack; 3 Use Heal; 4 Use Magic Water; 0 Exit Game"<<endl;
cin>>tempCom;
switch(tempCom)
{
case 0:
cout<<"Are you sure to exit? Y/N"<<endl;
char temp;
cin>>temp;
if(temp=='Y'||temp=='y')
return 0;
else
break;
case 1:
success=human->attack(enemy);
human->isLevelUp();
enemy.isDead();
break;
case 2:
success=human->specialatt(enemy);
human->isLevelUp();
enemy.isDead();
break;
case 3:
success=human->useHeal();
break;
case 4:
success=human->useMW();
break;
default:
break;
}
}
if(!enemy.death()) // If AI still alive如果ai还活着
enemy.AI(*human);
else // AI died 死
{
cout<<"YOU WIN"<<endl;
human->transfer(enemy); // player got all AI's items得到所有玩家的物品
}
if (human->death())
{
system("cls");
cout<<endl<<setw(50)<<"GAME OVER"<<endl;
delete human;//6_??????????? // player is dead, program is getting to its end, what should we do here?玩家死了,结束程序,我们应该做些什么呢?
system("pause");
return 0;
}
}
}
delete human;//7_????????? // You win, program is getting to its end, what should we do here?你赢了,程序结束,我们该怎么办呢?
system("cls");
cout<<"Congratulations! You defeated all opponents!!"<<endl;
system("pause");
return 0;
}