📄 game.cpp
字号:
{
juqing("这片地方已经搜索过了");
system("pause");
}
}
if ((hero_x == 15 && hero_y == 10) )
{
if (!qh)
{
juqing("地域爱琴海:“你连个真正的武器都没有怎么来打仗,去找到真正的帝王剑再来找我完成试炼吧”");
system("pause");
}else
{
if(hero.getlv()<5)
{
juqing("你太弱了,起码练到5级以后再来找我吧");
system("pause");
}else
{
juqing("很不错,你现在有资格来挑战我了,让我来看看你的试炼结果吧。");
system("pause");
zt=false;
}
}
}
break;
case '0':
exit(1);
break;
case 'P':
case 'p':
cout<<"=========================================="<<endl;
cout<<jn1.getname()<<":"<<"给对方造成"<<jn1.getdps()<<"点伤害,并消耗"<<jn1.getcon()<<"点魔法;"<<endl;
cout<<jn2.getname()<<":"<<"给对方造成"<<jn2.getdps()<<"点伤害,并消耗"<<jn2.getcon()<<"点魔法;"<<endl;
break;
case 'i':
case 'I':
flash();
cout<<"=========================================="<<endl;
cout<<"物品名称:"<<yao1.getname()<<" 效果:"<<yao1.getzuoyong()<<" 当前数量:"<<yao1.getnum()<<endl;
cout<<"物品名称:"<<yao2.getname()<<" 效果:"<<yao2.getzuoyong()<<" 当前数量:"<<yao2.getnum()<<endl;
useitem();
break;
default:
cout<<"请输入正确指令"<<endl;
}
}
void f_help()//战斗状态下文字界面
{
cout<<"请选择攻击方式:"<<endl;
printf("1.普通攻击 2.裂空斩 3.黑暗雷光 4.适用物品\n");
}
void flash()
{
system("cls");
cout<<" "<<"游 戏 : 幻世梵天"<<endl<<endl;
col.setcolor(9);
printf(" ┏━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 游戏菜单 ┃ \n");
printf(" ┣━━━━━━━━━━━━━━━┫\n");
printf(" ┃ I键 使用物品 ┃\n");
printf(" ┃ P键 查看技能 ┃\n");
printf(" ┃ W键 向上走 ┃\n");
printf(" ┃ S键 向下走 ┃\n");
printf(" ┃ A键 向左走 ┃\n");
printf(" ┃ D键 向右走 ┃\n");
printf(" ┃ C键 英雄状态 ┃\n");
printf(" ┃ 0键 退出游戏 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━┛\n");
col.setcolor();
cout<<" "<<"游戏地图"<<endl;
gamemap.printmap(gamemap.mapMax);
cout<<"=========================================="<<endl;
col.setcolor(2);
cout<<"你当前的生命值:";
drawhp(hero.getHp(),hero.getStr()*10);
cout<<"你当前的魔法值:";
drawhp(hero.getMp(),hero.getInt()*10);
col.setcolor();
cout<<"=========================================="<<endl;
}
void fight()//进去战斗状态后,关于战斗的处理
{
if(npcname(hero.getlv())==boss.getname())
{
flash();
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
cout<<npcname(hero.getlv())<<" 冲到了你的面前,战斗开始"<<endl;
printf("\n");
}
else
{
flash();
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
cout<<npcname(hero.getlv())<<" 冲到了你的面前,战斗开始"<<endl;
printf("\n");
}
char fin[6];
while(npchp(hero.getlv())>0&&hero.getHp()>0)
{
f_help();
cin>>fin;
f_input(fin[0]);
}
npc1.setHp(npc1.getStr()*10);
if(hero.getHp()>0)
{
flash();
hero.setexp();
cout<<"英雄获得了50点经验值"<<endl;
srand(GetTickCount());
int i_num=rand()%10;
if(i_num%2==0)
{
cout<<"英雄获得了物品:"<<yao1.getname()<<endl;
yao1.setnum(1);
}
if(i_num%2!=0)
{
cout<<"英雄获得了物品:"<<yao2.getname()<<endl;
yao2.setnum(1);
}
zt=true;
}
if(hero.getlv()<3)
{
npc1.setHp(npc1.getStr()*10);
}
else
{
npc1.setHp(npc1.getStr()*15);
}
cout<<"战斗结束!"<<endl;
system("pause");
}
void f_input(char n)//战斗状态中的按键处理
{
srand(GetTickCount());
dm=rand()%15;
switch(n)
{
case '1':
flash();
col.setcolor(6);
cout<<"你的普通攻击对 "<<npcname(hero.getlv())<<" 造成了"<<(npcdam(hero.getlv())+dm)-npcdef(hero.getlv())<<"点伤害!"<<endl;
cout<<npcname(hero.getlv())<<" 对你造成了"<<(npcdam(hero.getlv())+dm)-hero.getdef()<<"点伤害!"<<endl;
hero.setHp(hero.getHp()-((npcdam(hero.getlv())+dm)-hero.getdef()));
if(hero.getlv()<3)
{
npc1.setHp(npc1.getHp()-((hero.getdam()+dm)-npc1.getdef()));
}
if(hero.getlv()>=3&&hero.getlv()<=5)
{
npc2.setHp(npc2.getHp()-((hero.getdam()+dm)-npc2.getdef()));
}
if(hero.getlv()>5)
{
boss.setHp(boss.getHp()-((hero.getdam()+dm)-boss.getdef()));
}
if(hero.getHp()<=0)
{
hero.setHp(0);
}
if(npc1.getHp()<=0)
{
npc1.setHp(0);
}
if(npc2.getHp()<=0)
{
npc2.setHp(0);
}
if(boss.getHp()<=0)
{
boss.setHp(0);
}
col.setcolor();
cout<<"=========================================="<<endl;
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
break;
case '2':
flash();
col.setcolor(6);
if(hero.getMp()>=jn1.getcon())
{
cout<<"你的裂空斩对 "<<npcname(hero.getlv())<<" 造成了"<<jn1.getdps()+dm<<"点伤害!"<<endl;
cout<<npcname(hero.getlv())<<" 对你造成了"<<(npcdam(hero.getlv())+dm)-hero.getdef()<<"点伤害!"<<endl;
hero.setHp(hero.getHp()-((npcdam(hero.getlv())+dm)-hero.getdef()));
/*npc1.setHp(npc1.getHp()-(jn1.getdps()+dm));*/
if(hero.getlv()<3)
{
npc1.setHp(npc1.getHp()-(jn1.getdps()+dm));
}
if(hero.getlv()>=3&&hero.getlv()<=5)
{
npc2.setHp(npc2.getHp()-(jn1.getdps()+dm));
}
if(hero.getlv()>5)
{
boss.setHp(boss.getHp()-(jn1.getdps()+dm));
}
hero.setMp(hero.getMp()-jn1.getcon());
if(hero.getHp()<=0)
{
hero.setHp(0);
}
if(npc1.getHp()<=0)
{
npc1.setHp(0);
}
if(npc2.getHp()<=0)
{
npc2.setHp(0);
}
if(boss.getHp()<=0)
{
boss.setHp(0);
}
if(hero.getMp()<=0)
{
hero.setMp(0);
}
col.setcolor();
cout<<"=========================================="<<endl;
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
}
else
{
cout<<"魔法值不足,不能施放技能"<<endl;
cout<<"=========================================="<<endl;
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
}
break;
case '3':
flash();
col.setcolor(6);
if(hero.getMp()>=jn2.getcon())
{
cout<<"你的黑暗雷光对 "<<npcname(hero.getlv())<<" 造成了"<<jn2.getdps()+dm<<"点伤害!"<<endl;
cout<<npcname(hero.getlv())<<" 对你造成了"<<(npcdam(hero.getlv())+dm)-hero.getdef()<<"点伤害!"<<endl;
hero.setHp(hero.getHp()-((npcdam(hero.getlv())+dm)-hero.getdef()));
if(hero.getlv()<3)
{
npc1.setHp(npc1.getHp()-(jn2.getdps()+dm));
}
if(hero.getlv()>=3&&hero.getlv()<=5)
{
npc2.setHp(npc2.getHp()-(jn2.getdps()+dm));
}
if(hero.getlv()>5)
{
boss.setHp(boss.getHp()-(jn2.getdps()+dm));
}
hero.setMp(hero.getMp()-jn2.getcon());
if(hero.getHp()<=0)
{
hero.setHp(0);
}
if(npc1.getHp()<=0)
{
npc1.setHp(0);
}
if(npc2.getHp()<=0)
{
npc2.setHp(0);
}
if(boss.getHp()<=0)
{
boss.setHp(0);
}
if(hero.getMp()<=0)
{
hero.setMp(0);
}
col.setcolor();
cout<<"=========================================="<<endl;
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
}
else
{
cout<<"魔法值不足,不能施放技能"<<endl;
cout<<"=========================================="<<endl;
col.setcolor(4);
cout<<npcname(hero.getlv())<<"当前生命值:";
drawhp(npchp(hero.getlv()),npcstr(hero.getlv())*10);
col.setcolor();
cout<<"=========================================="<<endl;
}
break;
case '4':
useitem();
break;
default:
cout<<"请输入正确指令"<<endl;
}
}
void lvup()//英雄升级的处理
{
if(hero.getexp()>=100)
{
hero.setlv();
hero.setexp(0);
hero.setAll();
hero.setHp(hero.getStr()*10);
hero.setMp(hero.getInt()*10);
hero.setdam(hero.getStr(),hero.getDex());
hero.setdef(hero.getDex());
cout<<"英雄升到了"<<hero.getlv()<<"级,所有属性提高了10点,赶快查看属性面板吧!"<<endl;
system("pause");
}
}
void die()//英雄死亡及游戏通关的处理
{
if(hero.getHp()<=0)
{
juqing("伟大的凡达伽·七夜,未来梵天大陆的帝王 居传闻死在了新手村!~");
exit(0);
}
if(boss.getHp()<=0)
{
juqing("地域爱琴海:“恭喜你完成了试炼,要想统一梵天大陆你还需要付出很多");
juqing("七夜:我会为我的目标奋斗的!");
juqing("===========================================================");
cout<<"恭喜你已通第一关!"<<endl;
exit(0);
}
}
void useitem()//使用物品的处理
{
char n[5];
cout<<"请输入药品编号:1."<<yao1.getname()<<" 2."<<yao2.getname()<<" 3.返回"<<endl;
cin>>n;
switch(n[0])
{
case '1':
if(yao1.getnum()>0)
{
cout<<"你使用了"<<yao1.getname()<<"为你恢复了500点HP"<<endl;
hero.setHp(hero.getHp()+500);
if(hero.getHp()>hero.getStr()*10)
{
hero.setHp(hero.getStr()*10);
}
yao1._setnum(1);
}
else
{
cout<<"你都没药了"<<endl;
}
break;
case '2':
if(yao2.getnum()>0)
{
cout<<"你使用了"<<yao2.getname()<<"为你恢复了500点MP"<<endl;
hero.setMp(hero.getMp()+500);
if(hero.getMp()>hero.getInt()*10)
{
hero.setMp(hero.getInt()*10);
}
yao2._setnum(1);
}
else
{
cout<<"你都没药了"<<endl;
}
break;
case '3':
break;
default:
cout<<"输入了错误的编号"<<endl;
}
}
char *npcname(int lv)//对象的名字
{
if(lv<3)
{
return npc1.getname();
}
if(lv>=3&&lv<=5)
{
return npc2.getname();
}
if(lv>5&&qh)
{
return boss.getname();
}
return false;
}
int npcdam(int lv)//对象的伤害
{
if(lv<3)
{
return npc1.getdam();
}
if(lv>=3&&lv<=5)
{
return npc2.getdam();
}
if(lv>5)
{
return boss.getdam();
}
return false;
}
int npchp(int lv)//对象的HP
{
if(lv<3)
{
return npc1.getHp();
}
if(lv>=3&&lv<=5)
{
return npc2.getHp();
}
if(lv>5)
{
return boss.getHp();
}
return false;
}
int npcdef(int lv)//对象的防御
{
if(lv<3)
{
return npc1.getdef();
}
if(lv>=3&&lv<=5)
{
return npc2.getdef();
}
if(lv>5)
{
return boss.getdef();
}
return false;
}
void juqing(char *s)// 逐字输出剧情
{
col.setcolor(6);
while(*s!='\0')
{
cout<<*s;
s++;
Sleep(30);
}
cout<<endl;
col.setcolor();
}
int npcstr(int lv)
{
if(lv<3)
{
return npc1.getStr();
}
if(lv>=3&&lv<=5)
{
return npc2.getStr();
}
if(lv>5)
{
return boss.getStr();
}
return false;
}
void drawhp(int a,int b)
{
int t=(a*10)/b;
for(int i=0;i<10;++i)
{
if (i<t)
{
cout<<"■";
}else
{
cout<<"□";
}
}
cout<<t*10<<"%"<<endl;;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -