搜索
查看: 857|回复: 4
打印 上一主题 下一主题

推箱子的问题,我的问题是按wasd时那个S却不动。求大神指点。

[复制链接]
跳转到指定楼层
楼主
发表于 2018-2-5 18:10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10啊哈币
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{  
char a[50][50]={"       ###          ",
                           "       #*#          ",
                           "       # #           ",
                           "####o######",
                           "#*  oS o *####",
                           "#####o#####",
                           "         # #         ",
                           "         #*#         ",
                           "         ###        "};
int i,x,y;
char ch;
x=4;
y=5;
for(i=0;i<=8;i++)
  puts(a[i]);
while(a[1][4]!='o'&&a[4][1]!='o'&&a[4][9]!='o'&&a[7][5]!='o')
{
  ch=getch();
   if(ch=='w'&&a[x-1][y]!='#')
   {
    if(a[x-1][y]==' ')
    {
     a[x][y]=' ';
     x--;
     a[x][y]='S';
    }
    if(a[x-1][y]=='o'&&a[x-2][y]!='#')
    {
     a[x][y]=' ';
     x--;
     a[x][y]='S';
     a[x-1][y]='o';
    }
   }
   if(ch=='s'&&a[x+1][y]!='#')
   {
    if(a[x+1][y]==' ')
    {
     a[x][y]=' ';
     x++;
     a[x][y]='S';
    }
    if(a[x+1][y]=='o'&&a[x+2][y]!='#')
    {
     a[x][y]=' ';
     x++;
     a[x][y]='S';
     a[x+1][y]='o';
    }
   }
   if(ch=='a'&&a[x][y-1]!='#')
   {
    if(a[x][y-1]==' ')
    {
     a[x][y]=' ';
     y--;
     a[x][y]='S';
    }
    if(a[x][y-1]=='o'&&a[x][y-2]!='#')
    {
     a[x][y]=' ';
     y--;
     a[x][y]='S';
     a[x][y-1]='o';
    }
   }
   if(ch=='d'&&a[x][y+1]!='#')
   {
    if(a[x][y+1]==' ')
    {
     a[x][y]=' ';
     y++;
     a[x][y]='S';
    }
    if(a[x][y+1]=='o'&&a[x][y+2]!='#')
    {
     a[x][y]==' ';
     y++;
     a[x][y]=='S';
     a[x][y+1]=='o';
    }
   }
}
for(i=0;i<=8;i++)
  puts(a[i]);
system("cls");
printf("You Win!\n");
system("pause");
return 0;
}

最佳答案

查看完整内容

[mw_shl_code=c,true] #include #include #include int main() { char a[50][50]={" ### ", " #*# ", " # # ", "####o######", "#* oS o *####", "#####o#####", " # # ", ...
沙发
发表于 2018-2-5 18:10:05 | 只看该作者
[mw_shl_code=c,true]
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{  
char a[50][50]={"       ###          ",
                           "       #*#          ",
                           "       # #           ",
                           "####o######",
                           "#*  oS o *####",
                           "#####o#####",
                           "         # #         ",
                           "         #*#         ",
                           "         ###        "};
int i,x,y;
char ch;
x=4;
y=5;
for(i=0;i<=8;i++)
  puts(a);
while(a[1][4]!='o'&&a[4][1]!='o'&&a[4][9]!='o'&&a[7][5]!='o')
{
  ch=getch();
   if(ch=='w'&&a[x-1][y]!='#')
   {
    if(a[x-1][y]==' ')
    {
     a[x][y]=' ';
     x--;
     a[x][y]='S';
    }
    if(a[x-1][y]=='o'&&a[x-2][y]!='#')
    {
     a[x][y]=' ';
     x--;
     a[x][y]='S';
     a[x-1][y]='o';
    }
   }
   if(ch=='s'&&a[x+1][y]!='#')
   {
    if(a[x+1][y]==' ')
    {
     a[x][y]=' ';
     x++;
     a[x][y]='S';
    }
    if(a[x+1][y]=='o'&&a[x+2][y]!='#')
    {
     a[x][y]=' ';
     x++;
     a[x][y]='S';
     a[x+1][y]='o';
    }
   }
   if(ch=='a'&&a[x][y-1]!='#')
   {
    if(a[x][y-1]==' ')
    {
     a[x][y]=' ';
     y--;
     a[x][y]='S';
    }
    if(a[x][y-1]=='o'&&a[x][y-2]!='#')
    {
     a[x][y]=' ';
     y--;
     a[x][y]='S';
     a[x][y-1]='o';
    }
   }
   if(ch=='d'&&a[x][y+1]!='#')
   {
    if(a[x][y+1]==' ')
    {
     a[x][y]=' ';
     y++;
     a[x][y]='S';
    }
    if(a[x][y+1]=='o'&&a[x][y+2]!='#')
    {
     a[x][y]==' ';
     y++;
     a[x][y]=='S';
     a[x][y+1]=='o';
    }
   }
for(i=0;i<=8;i++)
  puts(a);

system("cls");

}
printf("You Win!\n");
system("pause");
return 0;
}[/mw_shl_code]

点评

注意一下你的大括号!!!  发表于 2018-2-5 20:04
板凳
发表于 2018-2-5 19:53:54 | 只看该作者
可我试了一下,wasd哪一个都不动!!
地板
 楼主| 发表于 2018-2-6 15:36:01 | 只看该作者
创世菌 发表于 2018-2-5 20:03
[mw_shl_code=c,true]
#include
#include

看到了,while下面的那个大括号位置打错了。。谢谢大佬。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表