#include <iostream>
#include <cstdio>
#include <string.h>
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{
char a[50][50]={"##########",
"## ###",
"##X### #",
"# O X X #",
"# ??# X ##",
"##??# ##",
"##########"};
int i;
for(i=0;i<=6;i++){
puts(a[i]);
}
int p=3,q=2;
char ch;
char m;
while(1){
ch=getch();
// 左边
if(ch==75){
// 遇到墙不能动
if(a[p][q-1]!='#'){
// 推箱子遇到墙不能动
if(a[p][q-1]=='X'){
if(a[p][q-2]!='#'&&a[p][q-2]!='X'){
a[p][q]=' ';
q--;
a[p][q]='O';
q--;
a[p][q]='X';
q++;
}
}
else{
a[p][q]=' ';
q--;
a[p][q]='O';
}
}
}
// 右边
if(ch==77){
// 遇到墙不能动
if(a[p][q+1]!='#'){
// 推箱子遇到墙不能动
if(a[p][q+1]=='X'){
if(a[p][q+2]!='#'&&a[p][q+2]!='X'){
a[p][q]=' ';
q++;
a[p][q]='O';
q++;
a[p][q]='X';
q--;
}
}
else{
a[p][q]=' ';
q++;
a[p][q]='O';
}
}
}
// 上边
if(ch==72){
// 遇到墙不能动
if(a[p-1][q]!='#'){
// 推箱子遇到墙不能动
if(a[p-1][q]=='X'){
if(a[p-2][q]!='#'&&a[p-2][q]!='X'){
a[p][q]=' ';
p--;
a[p][q]='O';
p--;
a[p][q]='X';
p++;
}
}
else{
a[p][q]=' ';
p--;
a[p][q]='O';
}
}
}
// 下边
if(ch==80){
// 遇到墙不能动
if(a[p+1][q]!='#'){
// 推箱子遇到墙不能动
if(a[p+1][q]=='X'){
if(a[p+2][q]!='#'&&a[p+2][q]!='X'){
a[p][q]=' ';
p++;
a[p][q]='O';
p++;
a[p][q]='X';
p--;
}
}
else{
a[p][q]=' ';
p++;
a[p][q]='O';
}
}
}
if(ch=='r'){
system("cls");
printf("是否要重来:Y/N?");
m=getch();
if(m=='Y'||m=='y'){
system("cls");
return main();
}
}
if(a[4][2]!='X'&&a[4][2]!='O') a[4][2]='?';
if(a[4][3]!='X'&&a[4][3]!='O') a[4][3]='?';
if(a[5][2]!='X'&&a[5][2]!='O') a[5][2]='?';
if(a[5][3]!='X'&&a[5][3]!='O') a[5][3]='?';
system("cls");
for(i=0;i<=6;i++){
puts(a[i]);
}
if(a[4][2]=='X'&&a[4][3]=='X'&&a[5][2]=='X'&&a[5][3]=='X') {
system("cls");
printf("你赢了~");
break;
}
}
return 0;
}
}
游戏目标 : 将箱子(“X”)推到指定的位置("?")
按 ‘r’ 即可重新开始游戏
此游戏由键盘的上下左右控制,你在游戏中是’O’
'#'是游戏的地图