2D阵列迷宫任务

时间:2018-10-18 17:23:49

标签: java arrays loops while-loop

我目前正在一所IT学院学习,而且我的功课非常丰富,无论如何,我都无法找到逻辑来编写用于完成此任务的代码,因此,基本上,我需要一些指南,而不是整个代码! :)

我有2个字符数组,它们将呈现某种迷宫。可以说数组是8x8,我将在此处粘贴一个示例,以便您可以更好地查看:

char[][] maze = {'#','#','#',' ','#','#','#','#',},
                {'#',' ','#',' ','#',' ',' ','#',},
                {'#',' ','#',' ','#',' ',' ','#',},
                {' ',' ',' ','$','#','#',' ',' ',},
                {'#',' ','#',' ',' ',' ',' ','#',},
                {'#',' ','#','#','#',' ',' ','#',},
                {'#',' ',' ',' ',' ',' ',' ','#',},
                {'#','#','#','#','#','#',' ','#',}};

您可以看到它主要由#建造,墙壁和空间是4个出口,$是我们必须逃脱的英雄。 因此,我必须编写一个代码,要求用户在打印此迷宫时输入U,R,L,D,并且我的$应该相应地移动,但是如果有墙,则它应该不移动。 到目前为止,我已经做到了。基本上是问路并打印迷宫:

while(true) {
        System.out.println("Input direction:");
        direction = sc.next().charAt(0); 

        for(int row = 0; row < maze.length; row++) {  
            for(int col = 0; col < maze[row].length; col++) {
                System.out.print(maze[row][col] + " ")  

                }

            }
            System.out.println();

        }

我的问题是,我在接到指示后无法真正找到一种挽救英雄地位的逻辑。它应该是带有变量和数组交换元素的东西,但是我整日都在挣扎,所以我决定在这里问。如果我找到方法,我可以肯定我会剩下的事! :)

NB!在我的教育中,我基本上只能使用循环,条件和数组:)因此,欢迎您提供任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

您应该为heroX和hero Y位置保留一个变量,如有必要,请遍历整个2d数组一次。处理完之后,您应该检查他们试图移动的位置是墙壁还是出口。 “ U”将是位置maze[heroY-1][heroX],“ D”将是位置maze[heroY+1][heroX],依此类推。输入位置后,您要更新heroX,heroY和迷宫变量。

编辑:忘记垂直值在2d数组中排在首位