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

推箱子问题,出现修复

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-27 18:57:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[50][50]={"   ###     ",
     "   #*#     ",
                    "####0######",
                    "#*  0S 0 *#",
                    "#####0#####",
                    "    # #    ",
                    "    #*#    ",
                    "     #     ",
     };
int i,x,y,p;//还有一些东西没打
    char ch;
    p=0;//还有没打
    for(i=0;i<=10;i++)
  puts(a[i]);
while(a[1][4]!=p || a[3][1]!=p || a[3][9]!=p || a[6][5]!=p)
    {
  ch=getch();
        if(ch=='s')
        {
   if(a[x+1][y]!='#' )
   {
    a[x][y]=' ';
                x++;
                a[x][y]='S';
            }
            if(a[x+1][y]='0')
            {
    a[x][y]=' ';
                x++;
                a[x][y]='S';
                x++;
                a[x][y]='0';
            }
        }
  if(ch=='w')
        {
   if(a[x-1][y]!='#' )
   {
    a[x][y]=' ';
                x--;
                a[x][y]='S';
            }
            if(a[x-1][y]='0')
            {
    a[x][y]=' ';
                x--;
                a[x][y]='S';
                x--;
                a[x][y]='0';
            }
        }
   if(ch=='a')
        {
   if(a[x][y-1]!='#' )
   {
    a[x][y]=' ';
                y--;
                a[x][y]='S';
            }
            if(a[x+1][y]='0')
            {
    a[x][y]=' ';
                y--;
                a[x][y]='S';
                y--;
                a[x][y]='0';
            }
        }
   if(ch=='d')
        {
   if(a[x][y+1]!='#' )
   {
    a[x][y]=' ';
                y++;
                a[x][y]='S';
            }
            if(a[x][y+1]='0')
            {
    a[x][y]=' ';
                y++;
                a[x][y]='S';
                y++;
                a[x][y]='0';
            }
        }
   system("cls");
   for(i=0;i<=10;i++)
   puts(a[i]);
        }
  system("cls");
  printf("you win\n");
  _sleep(5000);
  return 0;
}


运行时候按s,w,a,d会出现windows正在寻找该问题的解决方案
不知道我程序设计哪里有问题,麻烦大神帮忙看一下

最佳答案

查看完整内容

p的值错了,是'0'而不是0 x, y没有初始化 if(a[x+1][y]=='0') 这样的4句你都写成了 = '0' 另外 if(a[x+1][y]!='#' ) { a[x][y]=' '; x++; a[x][y]='S'; } if(a[x+1][y]=='0') { ...
沙发
发表于 2014-9-27 18:57:25 | 只看该作者
p的值错了,是'0'而不是0
x, y没有初始化

if(a[x+1][y]=='0') 这样的4句你都写成了 = '0'

另外
if(a[x+1][y]!='#' )
                        {
                                a[x][y]=' ';
                                x++;
                                a[x][y]='S';
                        }
                        if(a[x+1][y]=='0')
                        {
                                a[x][y]=' ';
                                x++;
                                a[x][y]='S';
                                x++;
                                a[x][y]='0';
                        }

这样一段,你先把下一个位置的值直接修改成S了,'0' 这个数据就被覆盖了,要先判读是不是'0'才可以
板凳
 楼主| 发表于 2014-9-28 11:12:46 | 只看该作者
rosynirvana 发表于 2014-9-27 19:36
p的值错了,是'0'而不是0
x, y没有初始化

if(a[x+1][y]!='#')
                        {
                                if(a[x+1][y]=='0')
                                {
                                        a[x][y]=' ';
                    x++;
                    a[x][y]='S';
                    x++;
                    a[x][y]='0';
                }
                else
                {
                                        a[x][y]=' ';
                    x++;
                    a[x][y]='S';
                }
            }
         }
这一段有什么问题,为什么我一按s,就会出现0变为s而原来的那个s不动的情况
完整代码为
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[50][50]={"   ###     ",
                        "   #*#     ",
                     "####0######",
                     "#*  0S 0 *#",
                     "#####0#####",
                     "    # #    ",
                     "    #*#    ",
                     "     #     ",
      };
int i,x,y,p;//还有一些东西没打
    char ch;
     x=4,y=5,p=0;//还有没打
    for(i=0;i<=10;i++)
   puts(a);
while(a[1][4]!=p || a[3][1]!=p || a[3][9]!=p || a[6][5]!=p)
     {
                ch=getch();
         if(ch=='s')
         {
                        if(a[x+1][y]!='#')
                        {
                                if(a[x+1][y]=='0')
                                {
                                        a[x][y]=' ';
                    x++;
                    a[x][y]='S';
                    x++;
                    a[x][y]='0';
                }
                else
                {
                                        a[x][y]=' ';
                    x++;
                    a[x][y]='S';
                }
            }
         }
        if(ch=='w')
         {
                        if(a[x-1][y]!='#')
                        {
                                if(a[x-1][y]=='0')
                                {
                                        a[x][y]=' ';
                    x--;
                    a[x][y]='S';
                    x--;
                    a[x][y]='0';
                }
                else
                {
                                        a[x][y]=' ';
                    x--;
                    a[x][y]='S';
                }
            }
         }
    system("cls");
    for(i=0;i<=10;i++)
    puts(a);
         }
   system("cls");
   printf("you win\n");
   _sleep(5000);
   return 0;
}
哪里又出现错误,麻烦大神了
地板
 楼主| 发表于 2014-9-28 11:29:11 | 只看该作者
本帖最后由 rosynirvana 于 2014-9-28 11:46 编辑
rosynirvana 发表于 2014-9-27 19:36
p的值错了,是'0'而不是0
x, y没有初始化

改了以后的程序怎么还是有问题,试验一下WS

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. char a[50][50]={"   ###     ",
  6.                         "   #*#     ",
  7.                      "####0######",
  8.                      "#*  0S 0 *#",
  9.                      "#####0#####",
  10.                      "    # #    ",
  11.                      "    #*#    ",
  12.                      "     #     ",
  13.       };
  14. int i,x,y,p;//还有一些东西没打
  15.     char ch;
  16.      x=3,y=5;
  17.         p='0';//还有没打
  18.     for(i=0;i<=10;i++)
  19.    puts(a[i]);
  20. while(a[1][4]!=p || a[3][1]!=p || a[3][9]!=p || a[6][5]!=p)
  21.      {
  22.                 ch=getch();
  23.          if(ch=='s')
  24.          {
  25.                         if(a[x+1][y]!='#')
  26.                         {
  27.                                 if(a[x+1][y]=='0')
  28.                                 {
  29.                                         a[x][y]=' ';
  30.                     x++;
  31.                     a[x][y]='S';
  32.                     x++;
  33.                     a[x][y]='0';
  34.                 }
  35.                 else
  36.                 {
  37.                                         a[x][y]=' ';
  38.                     x++;
  39.                     a[x][y]='S';
  40.                 }
  41.             }
  42.          }
  43.         if(ch=='w')
  44.          {
  45.                         if(a[x-1][y]!='#')
  46.                         {
  47.                                 if(a[x-1][y]=='0')
  48.                                 {
  49.                                         a[x][y]=' ';
  50.                     x--;
  51.                     a[x][y]='S';
  52.                     x--;
  53.                     a[x][y]='0';
  54.                 }
  55.                 else
  56.                 {
  57.                                         a[x][y]=' ';
  58.                     x--;
  59.                     a[x][y]='S';
  60.                 }
  61.             }
  62.          }
  63.     system("cls");
  64.     for(i=0;i<=10;i++)
  65.     puts(a[i]);
  66.          }
  67.    system("cls");
  68.    printf("you win\n");
  69.    _sleep(5000);
  70.    return 0;
  71. }
复制代码
5#
发表于 2014-9-28 11:50:15 | 只看该作者
myzts 发表于 2014-9-28 11:29
改了以后的程序怎么还是有问题,试验一下WS

如果0过去一格就是墙呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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