C ++忽略While循环条件

时间:2019-03-12 03:19:39

标签: c++ while-loop

最近,我用C ++创建了一个基于文本的RPG,现在正尝试结合一种简单的寻路算法。我已经测试了算法本身,发现它可以工作,但是当我尝试将其合并到RPG中时,函数中的while循环条件开始被忽略。这是我的代码:

    int Strategy::path(char (&map)[25][100], int current_y, int current_x, int Target_x, int Target_y)
{
    int i;
    int n;
    bool up=false;
    bool down=false;
    bool left=false;
    bool right=false;
    while (map[Target_y-1][Target_x]!='_'&&map[Target_y-1][Target_x]!='-'&&map[Target_y-1][Target_x]!='='&&map[Target_y+1][Target_x]!='_'&&map[Target_y+1][Target_x]!='-'&&map[Target_y+1][Target_x]!='='&&map[Target_y][Target_x-1]!='_'&&map[Target_y][Target_x-1]!='-'&&map[Target_y][Target_x-1]!='='&&map[Target_y][Target_x+1]!='_'&&map[Target_y][Target_x+1]!='-'&&map[Target_y][Target_x+1]!='=')
    {
        bool f=false;
        int m=0;
        system("cls");
        printf("Time left: %i\n", time);
        int x;
        int y;
        using namespace std;
        for (y = 0; y<25; y++)
        {
            for (x = 0; x<100; x++)
            {
                cout << map[y][x];
            }
            printf("\n");
        }
        if (current_y > 0 && map[current_y - 1][current_x] ==' ')
        {
            map[current_y - 1][current_x] = '-';
        }
        if (current_y < 25 && map[current_y + 1][current_x] ==' ')
        {
            map[current_y + 1][current_x] = '-';
        }
        if (current_x > 0 && map[current_y][current_x - 1] ==' ')
        {
            map[current_y][current_x - 1] = '-';
        }
        if (current_x<100 && map[current_y][current_x + 1] ==' ')
        {
            map[current_y][current_x + 1] = '-';
        }
        map[current_y][current_x] = '=';
        for (i = 0; i < 25; i++)
        {
            for (n = 0; n < 100; n++)
            {
                if (map[i][n] == '_')
                {
                    current_y = i;
                    current_x = n;
                    f=true;
                    break;
                }
            }
            if (f==true)
            {
                break;
            }
        }
        for (i = 0; i < 25; i++)
        {
            for (n = 0; n < 100; n++)
            {
                if (map[i][n] == '-')
                {
                    map[i][n] = '_';
                    m++;
                }
            }
        }
        if (m==0)
        {
            return 4;
        }
    }
    bool r=false;
    while (true)
    {
        int d=rand()%4;
        if (map[Target_y + 1][Target_x] == '_' && d==0)
        {
            for (i = 0; i < 25; i++)
            {
                for (n = 0; n < 100; n++)
                {
                    if (map[i][n] == '-'||map[i][n]=='_'||map[i][n]=='=')
                    {
                        map[i][n] = ' ';
                    }
                }
            }
            return 0;
        }
        else if (map[Target_y - 1][Target_x] == '_' && d==1)
        {
            for (i = 0; i < 25; i++)
            {
                for (n = 0; n < 100; n++)
                {
                    if (map[i][n] == '-'||map[i][n]=='_'||map[i][n]=='=')
                    {
                        map[i][n] = ' ';
                    }
                }
            }
            return 1;
        }
        else if (map[Target_y][Target_x+1] == '_' && d==2)
        {
            for (i = 0; i < 25; i++)
            {
                for (n = 0; n < 100; n++)
                {
                    if (map[i][n] == '-'||map[i][n]=='_'||map[i][n]=='=')
                    {
                        map[i][n] = ' ';
                    }
                }
            }
            return 2;
        }

        else if (map[Target_y][Target_x-1] == '_' && d==3)
        {
            for (i = 0; i < 25; i++)
            {
                for (n = 0; n < 100; n++)
                {
                    if (map[i][n] == '-'||map[i][n]=='_'||map[i][n]=='=')
                    {
                        map[i][n] = ' ';
                    }
                }
            }
            return 3;
        }
    }
}

0 个答案:

没有答案