麻烦把能在VC++下运行的推箱子源代码(C语言编写)?”发给我下,谢谢nie198610@126.com 20
3个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#define X 6
#define Y 1
//输出函数
void show(char b[9][9])
{
printf(" 推箱子游戏 ");
printf("\n***************************\n\n");
char a1=1,a2=5,a3=3,a4='#';
printf(" 人:%c 墙:%c\n 箱子:%c 目的地:%c\n",a1,a4,a2,a3);
printf("\n***************************\n\n");
for(int i=0;i<9;i++)
{
for(int k=0;k<9;k++)
{
printf(" %c ",b[i][k]);
}
printf("\n");
}
printf("\n***************************\n");
}
//移动函数
void move(char c[9][9],int *x,int *y)
{
char t;
scanf("%c",&t);
//////////////////////////////////////////////////////////////////////////////////
if(t=='a')
{
if(c[*x][*y-1]=='#')//遇到墙
{
}
else
{
if(c[*x][*y-1]==5&&c[*x][*y-2]==0)//推箱子
{
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]=0;
*y-=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y-1]==c[X][Y])//离开目的地
{
c[*x][*y]=3;
*y-=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
////////////////////////////////////////////////////////////////////////////////////////
if(t=='s')
{
if(c[*x+1][*y]=='#')//遇到墙
{
}
else
{
if(c[*x+1][*y]==5&&c[*x+2][*y]==0)//推箱子
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
c[*x+1][*y]=5;
}
else
{
if(c[*x+1][*y]==5&&c[*x+2][*y]=='#')//推不动箱子
{
}
else
{
if(c[*x+1][*y]==c[X][Y])//进到目的地
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y]==c[X][Y])//走出目的地
{
c[*x][*y]=3;
*x+=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
//////////////////////////////////////////////////////////////////////////////////////
if(t=='w')
{
if(c[*x-1][*y]=='#')//遇到墙
{
}
else
{
if(c[*x-1][*y]==5&&c[*x-2][*y]!='#')//推箱子
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
c[*x-1][*y]=5;
}
else
{
if(c[*x-1][*y]==5&&c[*x-2][*y]=='#')//推不动箱子
{
}
else
{
if(c[*x-1][*y]==c[X][Y])//进到目的地
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
}
else
{
if(c[*x-1][*y]==c[X][Y])//走出目的地
{
c[*x][*y]=3;
*x-=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
////////////////////////////////////////////////////////////////////////////////////////////
if(t=='d')
{
if(c[*x][*y+1]=='#')//遇到墙
{
}
else
{
if(c[*x][*y+1]==5&&c[*x][*y+2]==0)//推箱子
{
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]=0;
*y+=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y+1]==c[X][Y])//离开目的地
{
c[*x][*y]=3;
*y+=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y+=1;
c[*x][*y]=1;
}
}
}
}
}
}
}
}
}
system("cls");//刷屏
}
void main()
{
int x=1,y=7;
//设置地图
char a[9][9]=
{
{'#','#','#','#','#','#','#','#','#'},
{'#','#','#',0,0,'#',0,1,'#'},
{'#',0,5,0,0,0,0,0,'#'},
{'#',0,0,0,0,'#',0,0,'#'},
{'#',0,'#','#',0,0,0,0,'#'},
{'#','#',0,0,'#',0,'#','#','#'},
{'#',3,0,0,0,0,'#','#','#'},
{'#','#','#',0,0,'#','#','#','#'},
{'#','#','#','#','#','#','#','#','#'}
};
show(a);
loop: move(a,&x,&y);
show(a);
goto loop;
}
#include<stdlib.h>
#define X 6
#define Y 1
//输出函数
void show(char b[9][9])
{
printf(" 推箱子游戏 ");
printf("\n***************************\n\n");
char a1=1,a2=5,a3=3,a4='#';
printf(" 人:%c 墙:%c\n 箱子:%c 目的地:%c\n",a1,a4,a2,a3);
printf("\n***************************\n\n");
for(int i=0;i<9;i++)
{
for(int k=0;k<9;k++)
{
printf(" %c ",b[i][k]);
}
printf("\n");
}
printf("\n***************************\n");
}
//移动函数
void move(char c[9][9],int *x,int *y)
{
char t;
scanf("%c",&t);
//////////////////////////////////////////////////////////////////////////////////
if(t=='a')
{
if(c[*x][*y-1]=='#')//遇到墙
{
}
else
{
if(c[*x][*y-1]==5&&c[*x][*y-2]==0)//推箱子
{
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]=0;
*y-=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y-1]==c[X][Y])//离开目的地
{
c[*x][*y]=3;
*y-=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y-=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
////////////////////////////////////////////////////////////////////////////////////////
if(t=='s')
{
if(c[*x+1][*y]=='#')//遇到墙
{
}
else
{
if(c[*x+1][*y]==5&&c[*x+2][*y]==0)//推箱子
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
c[*x+1][*y]=5;
}
else
{
if(c[*x+1][*y]==5&&c[*x+2][*y]=='#')//推不动箱子
{
}
else
{
if(c[*x+1][*y]==c[X][Y])//进到目的地
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y]==c[X][Y])//走出目的地
{
c[*x][*y]=3;
*x+=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*x+=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
//////////////////////////////////////////////////////////////////////////////////////
if(t=='w')
{
if(c[*x-1][*y]=='#')//遇到墙
{
}
else
{
if(c[*x-1][*y]==5&&c[*x-2][*y]!='#')//推箱子
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
c[*x-1][*y]=5;
}
else
{
if(c[*x-1][*y]==5&&c[*x-2][*y]=='#')//推不动箱子
{
}
else
{
if(c[*x-1][*y]==c[X][Y])//进到目的地
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
}
else
{
if(c[*x-1][*y]==c[X][Y])//走出目的地
{
c[*x][*y]=3;
*x-=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*x-=1;
c[*x][*y]=1;
}
}
}
}
}
}
else
{
////////////////////////////////////////////////////////////////////////////////////////////
if(t=='d')
{
if(c[*x][*y+1]=='#')//遇到墙
{
}
else
{
if(c[*x][*y+1]==5&&c[*x][*y+2]==0)//推箱子
{
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]=0;
*y+=1;
c[*x][*y]=1;
}
else
{
if(c[*x][*y+1]==c[X][Y])//离开目的地
{
c[*x][*y]=3;
*y+=1;
c[*x][*y]=1;
}
else //走到空地
{
c[*x][*y]=0;
*y+=1;
c[*x][*y]=1;
}
}
}
}
}
}
}
}
}
system("cls");//刷屏
}
void main()
{
int x=1,y=7;
//设置地图
char a[9][9]=
{
{'#','#','#','#','#','#','#','#','#'},
{'#','#','#',0,0,'#',0,1,'#'},
{'#',0,5,0,0,0,0,0,'#'},
{'#',0,0,0,0,'#',0,0,'#'},
{'#',0,'#','#',0,0,0,0,'#'},
{'#','#',0,0,'#',0,'#','#','#'},
{'#',3,0,0,0,0,'#','#','#'},
{'#','#','#',0,0,'#','#','#','#'},
{'#','#','#','#','#','#','#','#','#'}
};
show(a);
loop: move(a,&x,&y);
show(a);
goto loop;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我今天试着刚写了一个,用数组弄的,很新手,很拙劣,不要见笑,还有点小问题,只有两关= =,发给你了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-02-09
展开全部
已发。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询