推箱子 源代码
- 格式:docx
- 大小:18.05 KB
- 文档页数:16
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"time.h"
void show(char b[9][9])
{
printf("\t\t\t\t***************************\n");
printf("\t\t\t\t 推箱子游戏 ");
printf("\n\t\t\t\t***************************\n");
printf("\t\t\t\t 人:★ 墙:■\n\t\t\t\t 箱子:◎ 目的地:□\n\t\t\t\t 按 d 键 退出游戏\n\t\t\t\t 限时30秒!");
printf("\n\t\t\t\t***************************\n");
for(int i=0;i<9;i++) //使用循环将地图转换输出
{
printf("\t\t\t\t ");
for(int k=0;k<9;k++)
{
if(b[i][k]=='#')
{
printf("■");
}
else
{
if(b[i][k]==3)
{
printf("□");
}
else
{
if(b[i][k]==5)
{
printf("◎");
}
else
{
if(b[i][k]==1)
{
printf("★");
}
else
{
if(b[i][k]=='!')
{
printf("⊙"); }
else
{
printf("%c ",b[i][k]);
}
}
}
}
}
}
printf("\n");
}
printf("\t\t\t\t***************************\n");
}
下面的是cpp文件
#include"show.h"
/*============================================移动函数=============================================================*/
void move(char c[9][9],int *x,int *y,int X,int Y,int A,int B,int N,int M,char *t) {
*t=getch();
/*============================================结束=============================================================*/
if(*t=='d')//遇到d返回
{
}
/*============================================向左=============================================================*/
if(*t==75)
{
if(c[*x][*y-1]=='#'||c[*x][*y-1]==5&&c[*x][*y-2]==5||c[*x][*y-1]==5&&c[*x][*y-2]=='!')//遇到墙或推两个箱子
{
}
else
{
if(c[*x][*y-1]=='!')//把箱子推出目的地
{
if(c[*x][*y-2]!=0)
{
}
else
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
c[*x][*y-1]=5;
}
}
else
{
if(c[*x][*y-1]==5&&c[*x][*y-2]!='#')//推箱子
{
if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]||c[*x][*y]==c[N][M])//推着箱子离开目的地
{
c[*x][*y]=3;
*y-=1;
c[*x][*y]=1;
c[*x][*y-1]=5;
} else
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
c[*x][*y-1]=5;
}
}
else
{
if(c[*x][*y-1]==5&&c[*x][*y-2]=='#')//推不动箱子
{
}
else
{
if(c[*x][*y-1]==c[X][Y]||c[*x][*y-1]==c[A][B]||c[*x][*y-1]==c[N][M])//进到目的地
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]||c[*x][*y]==c[N][M])//离开目的地
{
c[*x][*y]=3;
*y-=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
}
}
}
}
}
}
if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地 {
c[*x][*y-1]='!';
}
}
/*============================================向右=============================================================*/
if(*t==77)
{
if(c[*x][*y+1]=='#'||c[*x][*y+1]==5&&c[*x][*y+2]==5||c[*x][*y+1]==5&&c[*x][*y+2]=='!')//遇到墙或推两个箱子
{
}
else
{
if(c[*x][*y+1]=='!')//把箱子推出目的地
{
if(c[*x][*y+2]!=0)
{
}
else
{
c[*x][*y]=0;
*y+=1;
c[*x][*y]=1;
c[*x][*y+1]=5;
}
}
else
{
if(c[*x][*y+1]==5&&c[*x][*y+2]!='#')//推箱子
{
if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]||c[*x][*y]==c[N][M])
{
c[*x][*y]=3;
*y+=1;
c[*x][*y]=1;
c[*x][*y+1]=5;
}
else
{
c[*x][*y]=0;
*y+=1; c[*x][*y]=1;
c[*x][*y+1]=5;
}
}
else
{
if(c[*x][*y+1]==5&&c[*x][*y+2]=='#')//推不动箱子
{
}
else
{
if(c[*x][*y+1]==c[X][Y]||c[*x][*y+1]==c[A][B]||c[*x][*y+1]==c[N][M])//进到目的地
{
c[*x][*y]=0;
*y+=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B]||c[*x][*y]==c[N][M])//离开目的地
{
c[*x][*y]=3;
*y+=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y+=1;
c[*x][*y]=1;
}
}
}
}
}
}
if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子进入目的地
{
c[*x][*y+1]='!';
}
}