推箱子代码

发布时间:2021-06-08

#include <stdio.h>//标准输入输出头文件
#include <stdlib.h>//system函数的头文件
#include <conio.h>//getch函数的头文件

char map[14][16];//存放读出的地图
int n=1;//用于控制从文件中读出的字符数,过关n++
static goal =0;//在每次读地图前记录下目的地的个数
int totalBox =0;//箱子的数量
int person_x =1,person_y = 1;//人的初始化坐标
int goalPlace[22]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};


void ReadMap()//读入地图并打开地图
{
int goalNum = 0;
FILE *fp;
fp = fopen("map.txt","r");//以输出的方式打开文件
if(fp == NULL)//如果打不开
{
printf("you can not open map\n");
exit(0);
}
char guan = 0;
char lastChar = NULL;//把最后一个字符赋值为空
for(int y=0;y<(n-1)*(14*17+4);y++)
guan= fgetc(fp);//打开文件中的地图
for(int x=0;x<4;x++)
{guan=fgetc(fp);
}
for(int i = 0;i<14;i++)
{for(int j=0;j<17;j++)
{guan = fgetc(fp);
if(guan == '6')//计算并存储"人"的坐标
{
person_x = i;
person_y = j;
}
if(guan == '3')//计算并存储"目的地"的坐标,与箱子的个数
{
totalBox++;
goalPlace[goalNum++] = i;
goalPlace[goalNum++] = j;

}
if(j != 17)
map[i][j] = guan;
}
}
fclose(fp);//关闭地图文件
goal = goalNum/2;

}

void ShowMap()//输出地图并使地图美观
{
char display;

system("cls");//清屏函数,清除上一步的地图并张显下一关的地图
system("color 0D");//增加颜色

printf("\n\n----------欢迎进入推箱子游戏!-------------\n");
printf("\nw=up\na=left\nd=right\ns=down\n");

for(int i = 0;i<14;i++)//美化并输出地图
{
for(int j=0;j<16;j++)
{
display = map[i][j];
if(display =='0') printf(" ");
else if(display == '1') printf("▇");
else if(display == '2') printf(" ");
else if(display == '3') printf("★");
else if(display == '4') printf("⊙");
else if(display == '6') printf("●");
}
printf("\n");
}
}





bool PlayGame()//人的移动的每一步的走法
{bool flag = false;
char play;
play = getch();//输入一个字符让人走动
switch(play)//当输入的是指定字符的时候
{
case 'w'://如果是向上移动
{
if(map[person_x-1][person_y] == '4')//人的前面是箱子
{
if(map[person_x-2][person_y]=='2'||map[person_x-2][person_y]=='3')//是空地或目的地
{
map[person_x-2][person_y] = '4';//把"箱子"推到前面
map[person_x-1][person_y] = '6';//人"往前走一步
map[person_x][person_y] = '2';//"人"走过的地方补为"空地"
flag = true;//移动合法
}
}
else if(map[person_x-1][person_y] == '3'||map[pe
rson_x-1][person_y] == '2')//人的前面是目的地或空地
{
map[person_x-1][person_y] = '6';//人往前一步
map[person_x][person_y] = '2';//走过的地方变为空地
flag = true;//如

推箱子代码.doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219