我目前正在一所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!在我的教育中,我基本上只能使用循环,条件和数组:)因此,欢迎您提供任何帮助!谢谢!
答案 0 :(得分:0)
您应该为heroX和hero Y位置保留一个变量,如有必要,请遍历整个2d数组一次。处理完之后,您应该检查他们试图移动的位置是墙壁还是出口。 “ U”将是位置maze[heroY-1][heroX]
,“ D”将是位置maze[heroY+1][heroX]
,依此类推。输入位置后,您要更新heroX,heroY和迷宫变量。
编辑:忘记垂直值在2d数组中排在首位