U71771.在线剪贴板

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
char mp[15][15]={
'Y','#','.','.','.','.','#','B','#','#','.','.','.','.','B',
'.','#','.','.','#','#','.','.','.','#','.','#','#','#','#',
'.','#','.','.','#','#','.','.','.','#','.','.','.','.','.',
'.','#','.','.','#','#','.','#','.','#','#','#','#','#','.',
'.','#','.','.','#','.','.','#','.','#','.','.','.','.','.',
'.','.','.','.','.','.','.','#','.','#','.','#','#','#','#',
'.','B','.','.','.','#','.','.','.','#','.','.','.','.','.',
'.','.','#','.','.','.','.','.','.','#','#','#','#','#','.',
'.','.','#','.','#','.','.','.','.','.','.','.','.','.','.',
'.','.','#','#','.','.','#','.','#','.','.','.','.','.','#',
'.','.','.','.','.','.','.','.','.','.','.','.','#','.','#',
'.','#','.','.','.','#','.','#','#','#','#','#','#','.','.',
'.','#','.','#','#','#','#','#','#','#','#','#','#','.','.',
'#','#','.','#','#','#','#','#','#','#','.','.','.','.','.',
'B','.','.','.','#','#','B','.','.','.','.','#','#','D','#'};
string intro_info="    >宝物介绍\n     武器介绍\n     盾牌介绍\n     怪物介绍\n\n按下WS选择选项,Enter选择,X键退出\n\n\n";
string contect="  >上一页             第01页,共10页                 下一页\n\n按下X键返回\n\n\n";
string thing_info[10]={
"    用来表示军衔的符,其中金制虎符\n    意味着极高的权力。",
"    古时人们佩带在身上,既为奢侈品,\n    也作护身符。",
"    上面画着各种符号,不知\n    有何作用的神秘娃娃。",
"    通常作为帝王陪葬品的金缕玉衣。",
"    用青铜打造,制作的青铜树,\n    做工十分精美。",
"    曾是某将士的宝剑。\n    历经千年光阴,剑身早已腐朽。",
"    用黄金制成的铠甲,十分宝贵。",
"    象征昔日辉煌王朝的御印,\n    上面的年号清晰可见。",
"    轴柄用翠绿的玉做成,卷轴上的\n    内容是一副美丽的水墨画。",
"    用作货币的刀状金属片,还刻着古文字。"};
string sword_info[6]={
"    最普通的铁质匕首,在盗墓圈子人手一份。\n    可以说是盗墓生涯的开端。",
"    尊贵的匕首。镶满名贵珠宝。\n    在盗墓圈十分稀有。",
"    相传越王勾践用过的宝剑。\n    仍然熠熠生辉。",
"    小巧且危险。可千里之外S人于无形。",
"    从大洋彼岸过来的独特的剑。\n    挥舞时十分优雅。",
"    用大量钢锻造的大剑。\n    想要驾驭它需要拥有远超常人的臂力。"};
string thing[10]={"金虎符","玉佩","陶瓷人偶","金缕玉衣","青铜树","铁剑","金甲","王朝御印","玉轴","刀币"};
string sword[6]={"匕首","七宝匕首","勾践剑","飞刀","西洋剑","钢大剑"};
int price[10]={10000,4000,20,50000,20000,150,43000,111000,8000,700};
int main_ptr=1,mon=0,blood=100;
int player_x=0,player_y=0;
void Intro(string intro_list[],string intro[],short mode){
	bool ptr=0;
	int page=1,len;
	contect[2]='>',contect[52]=' ';
	while(1){
		system("cls");
		printf("              ");
		switch(mode){
			case 1:{
				printf("宝物");
				len=10;
				break;
			}
			case 2:{
				printf("武器");
				len=6;
				break;
			}
			case 3:{
				printf("盾牌");
				break;
			}
			case 4:{
				printf("怪物");
				break;
			}
		}
		printf("介绍\n              ");
		for(char i:intro[page-1]) printf("%c",i);
		printf("\n");
		for(char i:intro_list[page-1]) printf("%c",i);
		printf("\n\n");
		contect[24]=page/10+'0',contect[25]=page%10+'0';
		contect[32]=len/10+'0',contect[33]=len%10+'0';
		for(char i:contect) printf("%c",i);
		system("pause");
		if(GetAsyncKeyState('X')) return;
		else if(GetAsyncKeyState('A') && ptr) ptr^=1,contect[2]='>',contect[52]=' ';
		else if(GetAsyncKeyState('D') && !ptr) ptr^=1,contect[2]=' ',contect[52]='>';
		else if(GetAsyncKeyState(VK_RETURN) & 0x8000){
			if(!ptr){
				if(page>1) page--;
				else page=len;
			}
			else if(ptr){
				if(page<len) page++;
				else page=1;
			}
			contect[24]=48+page/10,contect[25]=48+page%10;
		}
	}
}
void walk(short mode){
	int nx=player_x+(mode==1?-1:(mode==3)?1:0);
	int ny=player_y+(mode==2?-1:(mode==4)?1:0);
	if(nx<0 || nx>14 || ny<0 || ny>14){
		system("cls");
		printf("在当前位置,你不能走那里!");
		Sleep(5000);
		return;
	}
	if(mp[nx][ny]=='#'){
		system("cls");
		printf("在当前位置,你不能走那里!");
		Sleep(5000);
		return;
	}
	if(mp[nx][ny]=='D'){
		system("cls");
		printf("你已到达出口,是否逃出?(按下Y表示逃出,其他键表示放弃):\n");
		system("pause");
		if(GetAsyncKeyState('Y')){
			system("cls");
			printf("恭喜你逃出!本次探险共带回:%d$",mon);
			Sleep(7000);
			exit(0);
		}
		else return;
	}
	if(mp[nx][ny]=='B'){
		int a=rand()%10;
		system("cls");
		printf("在宝箱里获得了");
		for(auto i:thing[a]) printf("%c",i);
		printf("!\n\n该物品价值:%d$\n当前拥有金钱:%d$",price[a],mon+price[a]);
		mon+=price[a];
		Sleep(7000);
	}
	mp[player_x][player_y]='.';
	mp[nx][ny]='Y';
	player_x=nx,player_y=ny;
}
int main(){
	srand(time(0));
	printf("               欢迎来到《摸金校尉》,以下是游玩须知:\n\n");
	printf("  1. 在地图中,‘Y’表示角色,‘B’表示宝藏,‘.’表示可以走的道路,‘#’表示墙,‘D’表示出口。\n");
	printf("  2. 使用WASD来操控角色,若想打开宝箱,请移至宝箱坐标。\n"); 
	printf("  3. 游戏中,玩家需要在地图中探索,开箱,以赚取更多的钱。\n");
	printf("  4. 古墓内昏暗无比,请玩家步步为营,稳扎稳打。\n\n\n");
	system("pause");
	system("cls");
	while(1){
		system("cls");
		printf("当前金钱:%d$            当前生命值:%d\n",mon,blood);
		for(int i=player_x-2;i<=player_x+2;i++){
			for(int j=player_y-2;j<=player_y+2;j++) if(i>=0 && i<15 && j>=0 && j<15) printf("%c",mp[i][j]);
			printf("\n");
		}
		printf("\n\n按下‘X’查看介绍\n");
		system("pause");
		if(GetAsyncKeyState('W')) walk(1);  //向上 
		if(GetAsyncKeyState('A')) walk(2);  //向左 
		if(GetAsyncKeyState('S')) walk(3);  //向下 
		if(GetAsyncKeyState('D')) walk(4);  //向右 
		if(GetAsyncKeyState('X')){
			while(1){
				system("cls");
				for(int i:intro_info) printf("%c",i);
				system("pause");
				if(GetAsyncKeyState('W') && main_ptr>1)
					intro_info[4+14*(main_ptr-1)]=' ',intro_info[4+14*(--main_ptr-1)]='>';
				else if(GetAsyncKeyState('S') && main_ptr<4)
					intro_info[4+14*(main_ptr-1)]=' ',intro_info[4+14*(main_ptr++)]='>';
				else if(GetAsyncKeyState('X')) break;
				else if(GetAsyncKeyState(VK_RETURN) & 0x8000){
					switch(main_ptr){
						case 1:Intro(thing_info,thing,1);break;
						case 2:Intro(sword_info,sword,2);break;
						//case 3:Intro(shield_info,shield,3);break;
						//case 4:Intro(monst_info,monst,3);break;
					}
				}
			}
		}
	}
}

输入格式

1

输出格式

1

输入输出样例

  • 输入#1

    1

    输出#1

    1

说明/提示

1

首页