在swing中计算对象之间可能路径(可能无限)的java策略?
我正在尝试为我的地图构建应用程序构建一个逻辑函数,该函数将告诉我是否存在从一个swing对象到另一个swing对象的可用路径
具体来说,我想确定从一个Jabel到另一个Jabel的所有可能路径
空白区域由白色图像表示,墙壁由蓝色图像表示,玩家开始为橙色,玩家结束为绿色
所以我想我要做的是从起点检查每个可用路径。如果路径在目标处结束返回true,如果它在墙处结束,则将其作为新的起始路径。我目前的想法是创建一个填充整数0的二维数组。当用户将瓷砖更改为非白色时,阵列中相应的点将更改为1 2或3,具体取决于他们放置的瓷砖。然后,当他们试图保存地图时,算法将使用该2d数组来表示地图,并检查相邻路径和线性路径
我做得对还是更复杂
我觉得如果这是一张复杂的地图,可能会非常慢(比如n^2或更糟),因为路径可能会分叉。我正在考虑使用一种Dijkestras方法来解决这个问题,但我也不知道在swing中我会怎样做
游戏中也有一些移动限制
- 除非你停下来,否则你不能改变方向李>
- 你不能停下来,除非你撞到墙或地图的边缘李>
由于路径的数量变得越来越有限,这就消除了一些可供筛选的选项
# 1 楼答案
是的,我认为你走在正确的道路上。。您可以使用类似这样的方式进行碰撞:
在其中创建了一个对象,类坐标
在其中,必须为类坐标创建一个对象,以帮助存储坐标
通过这种方式,你可以很容易地检查是否有碰撞,以及你是否出界。然后改变方向,在字符串中添加新的坐标,以此类推。我认为这比使用2d阵列更容易
如果你觉得数组已经没有选择了,你就回去,直到有另一个可能的方向,然后朝那个方向走。(您只需单独保存以前的坐标,并在返回时覆盖它们)
德国劳埃德船级社