⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.cpp

📁 带地图和及时血条功能 随机遇敌 安全区设定 宝箱和多选择任务
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				{
					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 + -