人和箱子走过c会使c消失,但不影响游戏胜利的判断。滑稽.jpg
#include<iostream>
#include<windows.h>
using namespace std;
int irow=1,icol=2;//人的位置
int c1row=4,c1col=1,c2row=5,c2col=1,c3row=6,c3col=1;//出口位置
char A[8][9]={
{"########"},
{"##i ####"},
{"## o ##"},
{"### # ##"},
{"#c# # #"},
{"#co # #"},
{"#c o #"},
{"########"}
};
void showmap();
void step(char n);
int iswin();
//显示地图
void showmap()
{
int i,j;
for(i=0;i<=7;i++)
{
for(j=0;j<=7;j++)
{
cout<<A[i][j];
}
cout<<endl;
}
}
//一步判断
void step(char n)
{
int r,c;
r=irow;c=icol;
if(n=='w')
{
r=r-1;
}
else if(n=='a')
{
c=c-1;
}
else if(n=='d')
{
c=c+1;
}
else if(n=='s')
{
r=r+1;
}
if(A[r][c]==' '||A[r][c]=='c')
{
A[irow][icol]=' ';
A[r][c]='i';
irow=r;icol=c;
}
else if(A[r][c]=='o')
{
if(A[2*r-irow][2*c-icol]==' '||A[2*r-irow][2*c-icol]=='c') //人隔着箱子正对的地方
{
A[irow][icol]=' ';
A[r][c]='i';
A[2*r-irow][2*c-icol]='o';
irow=r;icol=c;
}
}
}
//胜利
int iswin()
{
if(A[c1row][c1col]=='o'&&A[c2row][c2col]=='o'&&A[c3row][c3col]=='o')
{
return 1;
}
return 0;
}
//主控
int main()
{
char n;
while(1)
{
showmap();
cin>>n;
step(n);
if(iswin())
{
cout<<"You Win!"<<endl;
break;
}
system("cls");
}
}