📄 game.cpp
字号:
cout<<"自动恢复生命值"<<g_Global.m_protagonist.m_nMaxHP/10<<"点"<<endl;
}
else if(g_Global.m_protagonist.m_nHP==g_Global.m_protagonist.m_nMaxHP)
{
cout<<"自动恢复生命值"<<g_Global.m_protagonist.m_nMaxHP/10<<"点"<<endl;
cout<<"生命值已回满!"<<endl;
}
else if(g_Global.m_protagonist.m_nHP>g_Global.m_protagonist.m_nMaxHP)
{
cout<<"自动恢复生命值"<<g_Global.m_protagonist.m_nMaxHP/10
-(g_Global.m_protagonist.m_nHP-g_Global.m_protagonist.m_nMaxHP)<<"点"<<endl;
cout<<"生命值已回满!"<<endl;
g_Global.m_protagonist.m_nHP=g_Global.m_protagonist.m_nMaxHP;
}
}
else
cout<<"目前生命值已经达到最大值!"<<endl;
if(g_Global.m_protagonist.m_nMP<g_Global.m_protagonist.m_nMaxMP)
{
g_Global.m_protagonist.m_nMP+=g_Global.m_protagonist.m_nMaxMP/10;
if(g_Global.m_protagonist.m_nMP<g_Global.m_protagonist.m_nMaxMP)
{
cout<<"自动恢复气力值"<<g_Global.m_protagonist.m_nMaxMP/10<<"点"<<endl;
}
else if(g_Global.m_protagonist.m_nMP==g_Global.m_protagonist.m_nMaxMP)
{
cout<<"自动恢复气力值"<<g_Global.m_protagonist.m_nMaxMP/10<<"点"<<endl;
cout<<"气力值已回满!"<<endl;
}
else if(g_Global.m_protagonist.m_nMP>g_Global.m_protagonist.m_nMaxMP)
{
cout<<"自动恢复气力值"<<g_Global.m_protagonist.m_nMaxMP/10
-(g_Global.m_protagonist.m_nMP-g_Global.m_protagonist.m_nMaxMP)<<"点"<<endl;
cout<<"气力值已回满!"<<endl;
g_Global.m_protagonist.m_nMP=g_Global.m_protagonist.m_nMaxMP;
}
}
else
cout<<"目前气力值已经达到最大值!"<<endl;
break;
case 'h':
case 'H':
GameHelp();
break;
case 'v':
case 'V':
GetMapInfo();
break;
case 'q':
case 'Q':
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<",你确定要离开游戏吗?(Y/N)"<<endl;
g_Global.m_nGameState=GAMESTATE_QUIT;
break;
case 'w':
case 'W':
case 's':
case 'S':
case 'a':
case 'A':
case 'd':
case 'D':
PlayerMove(cCommand);
break;
default:
cout<<"请进行输入有效按键!"<<endl;
break;
}
}
void CGame::GetMapInfo()
{
int nX,nY;
nX=g_Global.m_protagonist.m_nPosX;
nY=g_Global.m_protagonist.m_nPosY;
{
vector<SCENARIO_INFO>::iterator iter;
if (nX<=5&&nY<=5)
{
cout<<"所在位置:桃园村("<<nX<<","<<nY<<")"<<endl;
for(iter=g_Global.m_vScenarioInfo.begin();iter!=g_Global.m_vScenarioInfo.end();iter++)
{
if(iter->nSceType==GAMESTATE_FIGHT_VILLAGE)
{
g_Global.SetWordsColor();
cout<<iter->strSceInfo<<endl;
break;
}
}
}
else if(nX<=5&&nY>=6)
{
cout<<"所在位置:魔兔坡("<<nX<<","<<nY<<")"<<endl;
for(iter=g_Global.m_vScenarioInfo.begin();iter!=g_Global.m_vScenarioInfo.end();iter++)
{
if(iter->nSceType==GAMESTATE_FIGHT_HARE)
{
g_Global.SetWordsColor();
cout<<iter->strSceInfo<<endl;
break;
}
}
}
else if(nX>=6&&nY<=10)
{
cout<<"所在位置:野狼谷("<<nX<<","<<nY<<")"<<endl;
for(iter=g_Global.m_vScenarioInfo.begin();iter!=g_Global.m_vScenarioInfo.end();iter++)
{
if(iter->nSceType==GAMESTATE_FIGHT_WOLF)
{
g_Global.SetWordsColor();
cout<<iter->strSceInfo<<endl;
break;
}
}
}
else if(nX>=6&&nY>=11)
{
cout<<"所在位置:黑熊岭("<<nX<<","<<nY<<")"<<endl;
for(iter=g_Global.m_vScenarioInfo.begin();iter!=g_Global.m_vScenarioInfo.end();iter++)
{
if(iter->nSceType==GAMESTATE_FIGHT_BEAR)
{
g_Global.SetWordsColor();
cout<<iter->strSceInfo<<endl;
break;
}
}
}
}
bool bFind=false;
{
vector<CRole>::iterator iter;
for(iter=g_Global.m_vNPC.begin();iter!=g_Global.m_vNPC.end();iter++)
{
if(iter->m_nPosX==nX&&iter->m_nPosY==nY-1)
{
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"巡视周围,发现北方有一只"<<iter->m_strRoleName<<"用一双嗜血的眼睛热情的注视着你……"<<endl;
bFind=true;
}
if(iter->m_nPosX==nX&&iter->m_nPosY==nY+1)
{
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"巡视周围,发现南方有一只"<<iter->m_strRoleName<<"用一双嗜血的眼睛热情的注视着你……"<<endl;
bFind=true;
}
if(iter->m_nPosX==nX-1&&iter->m_nPosY==nY)
{
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"巡视周围,发现西方有一只"<<iter->m_strRoleName<<"用一双嗜血的眼睛热情的注视着你……"<<endl;
bFind=true;
}
if(iter->m_nPosX==nX+1&&iter->m_nPosY==nY)
{
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"巡视周围,发现东方有一只"<<iter->m_strRoleName<<"用一双嗜血的眼睛热情的注视着你……"<<endl;
bFind=true;
}
}
}
if(!bFind)
{
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"巡视周围,暂时没有发现魔物,继续前进吧!"<<endl;
}
}
void CGame::PlayerMove(char cDirection)
{
g_Global.SetWordsColor(FOREGROUND_GREEN);
int map=g_Global.GetMap(g_Global.m_protagonist.m_nPosX,g_Global.m_protagonist.m_nPosY);
if(map==0)
{
cout<<"地图信息出错"<<endl;
exit(0);
}
switch(cDirection)
{
case 'w':
case 'W':
switch(map)
{
case MAP_VILLAGE:
if(g_Global.m_protagonist.m_nPosY-1>=0)
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"向北移动一段距离。"<<endl;
}
else
{
cout<<"已走到桃源村的最北端,请换方向前进!"<<endl;
}
break;
case MAP_HARE:
if(g_Global.m_protagonist.m_nPosY-1>=6)
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"向北移动一段距离。"<<endl;
}
else
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"离开了魔兔坡,来到了桃源村。"<<endl;
}
break;
case MAP_WOLF:
if(g_Global.m_protagonist.m_nPosY-1>=0)
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"向北移动一段距离。"<<endl;
}
else
{
cout<<"已走到野狼谷的最北端,请换方向前进!"<<endl;
}
break;
case MAP_BEAR:
if(g_Global.m_protagonist.m_nPosY-1>=11)
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"向北移动一段距离。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosX<=8&&g_Global.m_protagonist.m_nPosY-1<11)
{
cout<<"已走到黑熊岭的最北端,请换方向前进!"<<endl;
}
else if(g_Global.m_protagonist.m_nPosX>8&&g_Global.m_protagonist.m_nPosY-1<11)
{
g_Global.m_protagonist.m_nPosY-=1;
cout<<"离开了黑熊岭,来到了野狼谷。"<<endl;
}
break;
}
break;
case 's':
case 'S':
switch(map)
{
case MAP_VILLAGE:
if(g_Global.m_protagonist.m_nPosY+1<=5)
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"向南移动一段距离。"<<endl;
}
else
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"离开了桃源村,来到了魔兔坡。"<<endl;
}
break;
case MAP_HARE:
if(g_Global.m_protagonist.m_nPosY+1<=10)
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"向南移动一段距离。"<<endl;
}
else
{
cout<<"已走到魔兔坡的最南端,请换方向前进!"<<endl;
}
break;
case MAP_WOLF:
if(g_Global.m_protagonist.m_nPosY+1<=10)
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"向南移动一段距离。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosX<=8&&g_Global.m_protagonist.m_nPosY+1>10)
{
cout<<"已走到野狼谷的最南端,请换方向前进!"<<endl;
}
else if(g_Global.m_protagonist.m_nPosX>8&&g_Global.m_protagonist.m_nPosY+1>10)
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"离开了野狼谷,来到了黑熊岭。"<<endl;
}
break;
case MAP_BEAR:
if(g_Global.m_protagonist.m_nPosY+1<=MAP_MAX_SIZE)
{
g_Global.m_protagonist.m_nPosY+=1;
cout<<"向南移动一段距离。"<<endl;
}
else
{
cout<<"已走到黑熊岭的最南端,请换方向前进!"<<endl;
}
break;
}
break;
case 'a':
case 'A':
switch(map)
{
case MAP_VILLAGE:
if(g_Global.m_protagonist.m_nPosX-1>=0)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"向西移动一段距离。"<<endl;
}
else
{
cout<<"已走到桃源村的最西端,请换方向前进!"<<endl;
}
break;
case MAP_HARE:
if(g_Global.m_protagonist.m_nPosX-1>=0)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"向西移动一段距离。"<<endl;
}
else
{
cout<<"已走到魔兔坡的最西端,请换方向前进!"<<endl;
}
break;
case MAP_WOLF:
if(g_Global.m_protagonist.m_nPosX-1>=6)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"向西移动一段距离。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosY==5&&g_Global.m_protagonist.m_nPosX-1<6)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"离开了野狼谷,来到了桃源村。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosY==6&&g_Global.m_protagonist.m_nPosX-1<6)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"离开了野狼谷,来到了魔兔坡。"<<endl;
}
else
{
cout<<"已走到野狼谷的最西端,请换方向前进!"<<endl;
}
break;
case MAP_BEAR:
if(g_Global.m_protagonist.m_nPosX-1>=6)
{
g_Global.m_protagonist.m_nPosX-=1;
cout<<"向西移动一段距离。"<<endl;
}
else
{
cout<<"已走到黑熊岭的最西端,请换方向前进!"<<endl;
}
break;
}
break;
case 'd':
case 'D':
switch(map)
{
case MAP_VILLAGE:
if(g_Global.m_protagonist.m_nPosX+1<=5)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"向东移动一段距离。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosY==5&&g_Global.m_protagonist.m_nPosX+1>5)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"离开了桃源村,来到了野狼谷。"<<endl;
}
else
{
cout<<"已走到桃源村的最东端,请换方向前进!"<<endl;
}
break;
case MAP_HARE:
if(g_Global.m_protagonist.m_nPosX+1<=5)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"向东移动一段距离。"<<endl;
}
else if(g_Global.m_protagonist.m_nPosY==6&&g_Global.m_protagonist.m_nPosX+1>5)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"离开了魔兔坡,来到了野狼谷。"<<endl;
}
else
{
cout<<"已走到魔兔坡的最东端,请换方向前进!"<<endl;
}
break;
case MAP_WOLF:
if(g_Global.m_protagonist.m_nPosX+1<=10)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"向东移动一段距离。"<<endl;
}
else
{
cout<<"已走到野狼谷的最东端,请换方向前进!"<<endl;
}
break;
case MAP_BEAR:
if(g_Global.m_protagonist.m_nPosX+1<=10)
{
g_Global.m_protagonist.m_nPosX+=1;
cout<<"向东移动一段距离。"<<endl;
}
else
{
cout<<"已走到黑熊岭的最东端,请换方向前进!"<<endl;
}
break;
}
break;
}
if((g_Global.m_protagonist.m_nPosX==7||g_Global.m_protagonist.m_nPosX==8)&&g_Global.m_protagonist.m_nPosY==MAP_MAX_SIZE)
{
if(g_Global.m_NPC_Number==0)
{
cout<<"到了这里,前面就是更广阔的天空!"<<endl;
g_Global.SetWordsColor(6,2);
cout<<"游戏结束,请按任意键退出!"<<endl;
g_Global.m_nGameState=GAMESTATE_OVER;
return;
}
else
{
cout<<"魔物还没有全部消灭,无法离开!"<<endl;
}
}
vector<CRole>::iterator iter;
for(iter=g_Global.m_vNPC.begin();iter!=g_Global.m_vNPC.end();iter++)
{
if(iter->m_nPosX==g_Global.m_protagonist.m_nPosX&&iter->m_nPosY==g_Global.m_protagonist.m_nPosY)
{
g_Global.m_fight.m_nBout=0;
g_Global.m_fight.m_iterNPC=*iter;
g_Global.SetWordsColor(4,0);
cout<<g_Global.m_protagonist.m_strRoleName;
g_Global.SetWordsColor(6,2);
cout<<"狭路相逢一只";
g_Global.SetWordsColor(4,0);
cout<<iter->m_strRoleName<<"(等级 "<<iter->m_nLevel<<")";
g_Global.SetWordsColor(6,2);
cout<<"进入战头状态!"<<endl;
g_Global.BattleInfo(g_Global.m_protagonist.m_nRoleType,g_Global.m_protagonist.m_nLevel);
g_Global.m_nGameState=GAMESTATE_FIGHT;
break;
}
}
}
void CGame::GameOver()
{
getchar();
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -