Java ASCII迷宫

时间:2016-10-17 02:54:02

标签: java matrix

我有一个用java编写的ascii迷宫解算器,使用char数组,它将正确路径的每个位置设置为前一个位置+ 1.我使用以下代码然后从中获取正确的路径但是它只适用于垂直运动。任何有关此事的帮助将不胜感激。

    int x, y;
    int max = Math.max((int)maze[maze.length-1][maze.length-2], 
                       (int)maze[maze.length-2][maze.length-1]);
    if(maze[maze.length-1][maze.length-2] == max)
    {
        x = maze.length-1;
        y = maze.length-2;
    }
    else
    {
        x = maze.length-2;
        y = maze.length-1;
    }
    for(int cur=0;cur<ans;cur++)
    {
        try
        {
            correct[x][y] = '*';
            if(maze[x-1][y] == maze[x][y]-1)
                x = x - 1;
            else if(maze[x+1][y] == maze[x][y]-1)
                x = x + 1;
            else if(maze[x][y-1] == maze[x][y]-1)
                y = y - 1;
            else if(maze[x][y+1] == maze[x][y]-1)
                y = y + 1;
        }catch(Throwable e){}
    }

1 个答案:

答案 0 :(得分:3)

对不起,如果不满意回答你自己的问题,但感谢@HovercraftFullOfEels我通过以下修改解决了我自己的问题:

for(int cnt = 0; cnt < numSteps; cnt++)
{
    correct[x][y] = '*';
    if(x-1 >= 0 && maze[x-1][y] == maze[x][y]-1)
        x--;
    else if(x+1 < maze.length && maze[x+1][y] == maze[x][y]-1)
        x++;
    else if(y-1 >= 0 && maze[x][y-1] == maze[x][y]-1)
        y--;
    else if(y+1 < maze.length && maze[x][y+1] == maze[x][y]-1)
        y++;
}