注册 登录
编程论坛 C语言论坛

有没有大佬看出来问题一直有两处错误

MRK 发布于 2020-04-23 09:43, 1447 次点击
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void ditu()
{
    char a[30][30]={"   ###",
                    "   #*#",
                    "   # #",
                    "####0######",
                    "#* 0 r 0 *#",
                    "##### #####",
                    "    #0#",
                    "    #*#",
                    "    ###"    };
        int i,x,y;
        x=4;
        y=5;
        char ch;
        for(i=0;i<9;i++)
        {
            puts(a[i]);
        }
}
void HEL()
{
        ch=getch();
        if(ch=='s')
        {
            if(a[x+1][y]!='#')//下面是否为墙
            {
                if(a[x+1][y]!='0')//下面是否为箱子
                {
                    if(a[x+1][y]!='@')
                    {
                        a[x][y]=' ';//下面不为墙或者箱子时运行
                        x++;
                        a[x][y]='r';
                    }
                }
                else if(a[x+2][y]!='#')//若下面为箱子则运行以下内容
                {
                    if(a[x+3][y]!='*')
                    {
                        a[x][y]=' ';
                        x++;
                        a[x][y]='r';
                        x++;
                        a[x][y]='@';
                        x--;
                    }
                    else if(a[x+3][y]!='#')
                    {
                        a[x][y]=' ';
                        x++;
                        a[x][y]='r';
                        x++;
                        a[x][y]='0';
                        x--;
                    }
                }   
            }
        }
        if(ch=='w')
        {
            if(a[x-1][y]!='#')//上面是否为墙
            {
                if(a[x-1][y]!='0')//上面是否为箱子
                {
                    if(a[x-1][y]!='@')
                    {
                        a[x][y]=' ';//上面不为墙或者箱子时运行
                        x--;
                        a[x][y]='r';
                    }
                }
                else if(a[x-2][y]!='#')//若上面为箱子则运行以下内容
                {
                    if(a[x-3][y]!='*')
                    {
                        a[x][y]=' ';
                        x--;
                        a[x][y]='r';
                        x--;
                        a[x][y]='@';
                        x++;
                        
                    }
                    else if(a[x-3][y]!='#')
                    {
                        a[x][y]=' ';
                        x--;
                        a[x][y]='r';
                        x--;
                        a[x][y]='0';
                        x++;
                    }
                }   
            }
        }
        if(ch=='a')
        {
            if(a[x][y-1]!='#')//左边是否为墙
            {
                if(a[x][y-1]!='0')//左边是否为箱子
                {
                    if(a[x][y-1]!='@')
                    {
                        a[x][y]=' ';//左边不为墙或者箱子时运行
                        y--;
                        a[x][y]='r';
                    }
                }
                else if(a[x][y-2]!='#')//若左边为箱子则运行以下内容
                {
                    if(a[x][y-3]!='*')
                    {
                        a[x][y]=' ';
                        y--;
                        a[x][y]='r';
                        y--;
                        a[x][y]='@';
                        y++;
                        
                    }
                    else if(a[x][y-3]!='#')
                    {
                        a[x][y]=' ';
                        y--;
                        a[x][y]='r';
                        y--;
                        a[x][y]='0';
                        y++;
                    }
                }   
            }
        }
        if(ch=='d')
        {
            if(a[x][y+1]!='#')//右边是否为墙
            {
                if(a[x][y+1]!='0')//右边是否为箱子
                {
                    if(a[x][y+1]!='@')
                    {
                        a[x][y]=' ';//右边不为墙或者箱子时运行
                        y++;
                        a[x][y]='r';
                    }
                }
                else if(a[x][y+2]!='#')//若右边为箱子则运行以下内容
                {
                    if(a[x][y+3]!='*')
                    {
                        a[x][y]=' ';
                        y++;
                        a[x][y]='r';
                        y++;
                        a[x][y]='@';
                        y--;
                    }
                    else if(a[x][y+3]!='#')
                    {
                        a[x][y]=' ';
                        y++;
                        a[x][y]='r';
                        y++;
                        a[x][y]='0';
                        y--;
                    }
                }   
            }
        }
}
int main()
{
    ditu();
    while(1)
    {
        HEL;
    }
    return 0;
}





1 回复
#2
纯蓝之刃2020-04-23 10:16
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define hang 30
#define lie 30

int x=4,y=5;
char a[30][30]= {       "   ###",
                       "   #*#",
                       "   # #",
                       "####0######",
                       "#* 0 r 0 *#",
                       "##### #####",
                       "    #0#",
                       "    #*#",
                       "    ###"
                   };

void ditu()
{
    int i,j;
    for(i=0; i<9; i++)
    {
        for(j=0; j<12; j++)
        {
            printf("%c",a[i][j]);
        }
        printf("\n");
    }
}

void HEL(char ch)
{
    if(ch=='s')
    {
        if(a[x+1][y]!='#')//下面是否为墙
        {
            if(a[x+1][y]!='0')//下面是否为箱子
            {
                if(a[x+1][y]!='@')
                {
                    a[x][y]=' ';//下面不为墙或者箱子时运行
                    x++;
                    a[x][y]='r';
                }
            }
            else if(a[x+2][y]!='#')//若下面为箱子则运行以下内容
            {
                if(a[x+3][y]!='*')
                {
                    a[x][y]=' ';
                    x++;
                    a[x][y]='r';
                    x++;
                    a[x][y]='@';
                    x--;
                }
                else if(a[x+3][y]!='#')
                {
                    a[x][y]=' ';
                    x++;
                    a[x][y]='r';
                    x++;
                    a[x][y]='0';
                    x--;
                }
            }
        }
    }
    if(ch=='w')
    {
        if(a[x-1][y]!='#')//上面是否为墙
        {
            if(a[x-1][y]!='0')//上面是否为箱子
            {
                if(a[x-1][y]!='@')
                {
                    a[x][y]=' ';//上面不为墙或者箱子时运行
                    x--;
                    a[x][y]='r';
                }
            }
            else if(a[x-2][y]!='#')//若上面为箱子则运行以下内容
            {
                if(a[x-3][y]!='*')
                {
                    a[x][y]=' ';
                    x--;
                    a[x][y]='r';
                    x--;
                    a[x][y]='@';
                    x++;

                }
                else if(a[x-3][y]!='#')
                {
                    a[x][y]=' ';
                    x--;
                    a[x][y]='r';
                    x--;
                    a[x][y]='0';
                    x++;
                }
            }
        }
    }
    if(ch=='a')
    {
        if(a[x][y-1]!='#')//左边是否为墙
        {
            if(a[x][y-1]!='0')//左边是否为箱子
            {
                if(a[x][y-1]!='@')
                {
                    a[x][y]=' ';//左边不为墙或者箱子时运行
                    y--;
                    a[x][y]='r';
                }
            }
            else if(a[x][y-2]!='#')//若左边为箱子则运行以下内容
            {
                if(a[x][y-3]!='*')
                {
                    a[x][y]=' ';
                    y--;
                    a[x][y]='r';
                    y--;
                    a[x][y]='@';
                    y++;

                }
                else if(a[x][y-3]!='#')
                {
                    a[x][y]=' ';
                    y--;
                    a[x][y]='r';
                    y--;
                    a[x][y]='0';
                    y++;
                }
            }
        }
    }
    if(ch=='d')
    {
        if(a[x][y+1]!='#')//右边是否为墙
        {
            if(a[x][y+1]!='0')//右边是否为箱子
            {
                if(a[x][y+1]!='@')
                {
                    a[x][y]=' ';//右边不为墙或者箱子时运行
                    y++;
                    a[x][y]='r';
                }
            }
            else if(a[x][y+2]!='#')//若右边为箱子则运行以下内容
            {
                if(a[x][y+3]!='*')
                {
                    a[x][y]=' ';
                    y++;
                    a[x][y]='r';
                    y++;
                    a[x][y]='@';
                    y--;
                }
                else if(a[x][y+3]!='#')
                {
                    a[x][y]=' ';
                    y++;
                    a[x][y]='r';
                    y++;
                    a[x][y]='0';
                    y--;
                }
            }
        }
    }

    system("cls");
    ditu();
}
int main()
{
    char ch;
    ditu();
    while(1)
    {
        ch=getch();
        HEL(ch);
    }
    return 0;
}
1