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