#include <iostream>
#include <ctime>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <stack>
#include <set>
#include <windows.h>
#include <conio.h>
using namespace std;
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
srand(time(NULL));
char MAP[100][100]={{"###############################"},{"#@....#....@#*........@#@*...##"}, {"#.......*...#@.........#..##.##"},{"#*....#.....#..........#..##.##"},{"####.######.####...#########.##"},{"#@....#......................##"},{"#..##.#......................##"},{"#..##.#...#####################"},{"#.........#....*@.#.......@..##"},{"#..y@.#...#.......#..........%#"},{"#######...#.......#..........%#"},{"#@.*......######.####.##########"},{"#.....#......................##"},{"###############################"}};
int i,j,x=9,y=3,ax=4,ay=18,c=0;
char yt='.',ayt='.';
cout<<"欢迎来到鬼屋逃生游戏,用wasd操作,y是你的位置,#是墙,@是柜子,可以躲柜子里不受怪物攻击,a是怪物,速度是你2倍,每当你拿起一个钥匙,怪物自动传送你身旁,会杀死你的呕!!!*就是钥匙,%是大门,需攒齐六个钥匙才能逃脱!!!"<<endl;
system("pause");
bool flag=true;
while(flag)
{
bool flag1=true;;
if(MAP[x+1][y]=='a'||MAP[x-1][y]=='a'||MAP[x][y+1]=='a'||MAP[x][y-1]=='a'||MAP[x+1][y+1]=='a'||MAP[x-1][y-1]=='a'||MAP[x-1][y+1]=='a'||MAP[x+1][y-1]=='a')
{
if(MAP[x][y]!='@')
{
cout<<"你死了!!!"<<endl;
system("pause");
return 0;
}
}
if(MAP[x+1][y]=='%'||MAP[x-1][y]=='%'||MAP[x][y+1]=='%'||MAP[x][y-1]=='%'||MAP[x+1][y+1]=='%'||MAP[x-1][y-1]=='%'||MAP[x-1][y+1]=='%'||MAP[x+1][y-1]=='%')
{
if(c==6)
{
cout<<"游戏成功,逃脱成功!!!"<<endl;
system("pause");
return 0;
}
else
{
cout<<"钥匙不够!!!"<<endl;
system("pause");
}
}
for(i=0; i<=14; i++)
{
for(j=0; j<=31; j++)
{
cout<<MAP[i][j];
}
cout<<endl;
}
char t=getch();
if(t=='w'&&MAP[x-1][y]!='#'&&MAP[x-1][y]!='a'&&MAP[x-1][y]!='&')
{
MAP[x][y]=yt;
x--;
yt=MAP[x][y];
if(yt=='@')
MAP[x][y]='@';
else
MAP[x][y]='y';
if(yt=='*')
{
flag1=false;
yt='.';
c++;
MAP[ax][ay]=ayt;
ay=y+2;
ax=x;
MAP[x][y+2]='a';
}
}
if(t=='a'&&MAP[x][y-1]!='#'&&MAP[x][y-1]!='a'&&MAP[x][y-1]!='&')
{
MAP[x][y]=yt;
y--;
yt=MAP[x][y];
if(yt=='@')
MAP[x][y]='@';
else
MAP[x][y]='y';
if(yt=='*')
{
flag1=false;
yt='.';
MAP[ax][ay]=ayt;
c++;
ay=y+2;
ax=x;
MAP[x][y+2]='a';
}
}
if(t=='s'&&MAP[x+1][y]!='#'&&MAP[x+1][y]!='a'&&MAP[x+1][y]!='&')
{
MAP[x][y]=yt;
x++;
yt=MAP[x][y];
if(yt=='@')
MAP[x][y]='@';
else
MAP[x][y]='y';
if(yt=='*')
{
flag1=false;
yt='.';
c++;
MAP[ax][ay]=ayt;
ay=y+2;
ax=x;
MAP[x][y+2]='a';
}
if(yt=='&')
{
if(c==7)
{
cout<<"游戏成功!!!逃脱鬼屋!!!"<<endl;
return 0;
}
else
{
cout<<"钥匙不够!!!"<<endl;
x--;
yt=MAP[x][y];
MAP[x][y]='y';
MAP[x-1][y]='&';
}
}
}
if(t=='d'&&MAP[x][y+1]!='#'&&MAP[x][y+1]!='a'&&MAP[x][y+1]!='&')
{
MAP[x][y]=yt;
y++;
yt=MAP[x][y];
if(yt=='@')
MAP[x][y]='@';
else
MAP[x][y]='y';
if(yt=='*')
{
flag1=false;
yt='.';
c++;
MAP[ax][ay]=ayt;
ay=y+2;
ax=x;
MAP[x][y+2]='a';
}
}
if(flag1)
{
int ar=rand()%4;
if(ar==0&&MAP[ax-1][ay]!='#'&&MAP[ax-1][ay]!='@'&&MAP[ax-1][ay]!='&'&MAP[ax-1][ay]!='y')
{
MAP[ax][ay]=ayt;
ax--;
ayt=MAP[ax][ay];
MAP[ax][ay]='a';
}
else if(ar==1&&MAP[ax][ay-1]!='#'&&MAP[ax][ay-1]!='@'&&MAP[ax][ay-1]!='&'&&MAP[ax][ay-1]!='y')
{
MAP[ax][ay]=ayt;
ay--;
ayt=MAP[ax][ay];
MAP[ax][ay]='a';
}
else if(ar==2&&MAP[ax+1][ay]!='#'&&MAP[ax+1][ay]!='@'&&MAP[ax+1][ay]!='&'&&MAP[ax+1][ay]!='y')
{
MAP[ax][ay]=ayt;
ax++;
ayt=MAP[ax][ay];
MAP[ax][ay]='a';
}
else if(ar==3&&MAP[ax][ay+1]!='#'&&MAP[ax][ay+1]!='@'&&MAP[ax][ay+1]!='&'&&MAP[ax][ay+1]!='y')
{
MAP[ax][ay]=ayt;
ay++;
ayt=MAP[ax][ay];
MAP[ax][ay]='a';
}
}
system("cls");
}
system("pause");
return 0;
}
02-06
9886

01-23
9490

11-14
146

01-05
5846

04-27