求C语言高手帮忙改善下这段推箱子代码

当人物或箱子离开*号坐标后,怎样让原来*号的坐标值=*号
这段代码是可以编译运行的,刚学C不久,求解答
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
char a[50][50]={"##########",
"## ###",
"##@### #",
"# $ @ @ #",
"# **# @ ##",
"##**# ##",
"##########"};
int x=3,y=2,i,j;//人物坐标,$代表人
char k;//方向
for(i=0;i<7;i++)
{
for(j=0;j<10;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
while(a[4][2]!='@' || a[4][3]!='@' || a[5][2]!='@' || a[5][3]!='@')//*代表箱子最终的位子
{ //@代表箱子
k=getch();
if(k=='s')//当向下的时候
{
if(a[x+1][y]!='#')//人物向下不撞墙
{
if(a[x+1][y]=='@' && a[x+2][y]!='#' && a[x+2][y]!='@')//如果人物的下面是箱子,
{ //并且箱子的下面不是墙和箱子
a[x][y]=' ';
x++;
a[x][y]='$';
a[x+1][y]='@';
}
else
{
if(a[x+1][y]!='@')//如果人物的下面不是箱子
{
a[x][y]=' ';
x++;
a[x][y]='$';
}
}
}
}
if(k=='w')//向上
{
if(a[x-1][y]!='#')//人物向上不撞墙
{
if(a[x-1][y]=='@' && a[x-2][y]!='#' && a[x-2][y]!='@')//如果人物的上面是箱子,
{ //并且箱子的上面不是墙和箱子
a[x][y]=' ';
x--;
a[x][y]='$';
a[x-1][y]='@';
}
else
{
if(a[x-1][y]!='@')//如果人物的上面不是箱子
{
a[x][y]=' ';
x--;
a[x][y]='$';
}
}
}
}
if(k=='a')//向左
{
if(a[x][y-1]!='#')//人物向左不撞墙
{
if(a[x][y-1]=='@' && a[x][y-2]!='#' && a[x][y-2]!='@')//如果人物的左面是箱子,
{ //并且箱子的左面不是墙和箱子
a[x][y]=' ';
y--;
a[x][y]='$';
a[x][y-1]='@';
}
else
{
if(a[x][y-1]!='@')//如果人物的左面不是箱子
{
a[x][y]=' ';
y--;
a[x][y]='$';
}
}
}
}
if(k=='d')//向右
{
if(a[x][y+1]!='#')//人物向右不撞墙
{
if(a[x][y+1]=='@' && a[x][y+2]!='#' && a[x][y+2]!='@')//如果人物的右面是箱子,
{ //并且箱子的右面不是墙和箱子
a[x][y]=' ';
y++;
a[x][y]='$';
a[x][y+1]='@';
}
else
{
if(a[x][y+1]!='@')//如果人物的右面不是箱子
{
a[x][y]=' ';
y++;
a[x][y]='$';
}
}
}
}
/* if(a[4][2]!='@' && a[4][2]!='$')本来以为这段代码可以
a[4][2]=='*'; 在人和箱子离开*号坐标
if(a[4][3]!='@' && a[4][3]!='$')后,*号的坐标还会变回*号,
a[4][3]=='*'; 但是不管用。
if(a[5][2]!='@' && a[5][2]!='$')
a[5][2]=='*';
if(a[5][3]!='@' && a[5][3]!='$')
a[5][3]=='*';*/
system("cls");
for(i=0;i<7;i++)
{
for(j=0;j<10;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
}
system("cls");
printf("恭喜你获胜了");
Sleep(5000);
return 0;
}

a[4][2]=='*';
a[4][3]=='*';
a[5][2]==
a[5][3]==
把 == 改为 =
温馨提示:答案为网友推荐,仅供参考
相似回答