发布时间:2023-11-14 16:40来源:www.sf1369.com作者:宇宇
/*
姓名:
日期:2016年6月23日
描述:推箱子游戏
*/
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10//行
#define COLS 11//列
void main()//地图
{
char maps[ROWS][COLS]={
##########,
# ### #,
# O### #,
# R #,
#### #,
# #### #,
# #,
# #####,
# ,
##########
};
//获得地图上的人的初始坐标
int currentPersonRow;
int currentPersonCol;
while (maps[8][10]!='O')//如果箱子到了指定的坐标,就跳出游戏,宣布游戏通过
{
bool dap=false;
system(cls);//清屏
for (int i = 0; i < ROWS; i++)//打印地图
{
for (int j = 0; j < COLS; j++)
{
printf(%C,maps[i][j]);
if(maps[i][j]=='R')//获取人的位置
{
currentPersonRow=i;
currentPersonCol=j;
}
}
printf(\n);
}
printf(游戏规则:R是人,O是箱子,将箱子移动到出口处就算过关!\n);
printf(w:向上移动、a:向左移动、s:向下移动、d:向右移动,q:退出游戏\n);
char direction=getchar();
fflush(stdin);
switch (direction)//控制移动方向
{
case 'w':
case 'W':
if(maps[currentPersonRow-1][currentPersonCol]==' ')//判断人前面是不是空格
{
maps[currentPersonRow-1][currentPersonCol]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
else if(maps[currentPersonRow-1][currentPersonCol]=='O')//判断人前面是不是箱子
{
if(maps[currentPersonRow-2][currentPersonCol]==' ')//如果箱子前面是空格
{
maps[currentPersonRow-2][currentPersonCol]='O';
maps[currentPersonRow-1][currentPersonCol]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
}
break;
case 's':
case 'S':
if(maps[currentPersonRow+1][currentPersonCol]==' ')//判断人前面是不是空格
{
maps[currentPersonRow+1][currentPersonCol]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
else if(maps[currentPersonRow+1][currentPersonCol]=='O')//判断人前面是不是箱子
{
if(maps[currentPersonRow+2][currentPersonCol]==' ')//如果箱子前面是空格
{
maps[currentPersonRow+2][currentPersonCol]='O';
maps[currentPersonRow+1][currentPersonCol]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
}
break;
case 'a':
case 'A':
if(maps[currentPersonRow][currentPersonCol-1]==' ')//判断人前面是不是空格
{
maps[currentPersonRow][currentPersonCol-1]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
else if(maps[currentPersonRow][currentPersonCol-1]=='O')//判断人前面是不是箱子
{
if(maps[currentPersonRow][currentPersonCol-2]==' ')//如果箱子前面是空格
{
maps[currentPersonRow][currentPersonCol-1]='R';
maps[currentPersonRow][currentPersonCol]=' ';
maps[currentPersonRow][currentPersonCol-2]='O';
}
}
break;
case 'd':
case 'D':
if(maps[currentPersonRow][currentPersonCol+1]==' ')//判断人前面是不是空格
{
maps[currentPersonRow][currentPersonCol+1]='R';
maps[currentPersonRow][currentPersonCol]=' ';
}
else if(maps[currentPersonRow][currentPersonCol+1]=='O')//判断人前面是不是箱子
{
if(maps[currentPersonRow][currentPersonCol+2]==' ')//如果箱子前面是空格
{
maps[currentPersonRow][currentPersonCol+1]='R';
maps[currentPersonRow][currentPersonCol]=' ';
maps[currentPersonRow][currentPersonCol+2]='O';
}
}
break;
//退出游戏
case 'q':
case 'Q':
dap=true;
break;
}
if(dap)//退出游戏
{
break;
}
}
printf(恭喜你,通关了!\n);
system(pause);
}