0

好的,所以我正在创建一个球倾斜游戏,你可以在迷宫中导航一个球。球有效,并且在该区域一切都很好,但是我在迷宫中遇到了一些问题。

迷宫是通过包含 1 和 0(1 是墙,0 是地板)的 .txt 文件以编程方式创建的。我有一个 for 循环遍历整个 .txt 文件并放置一个白色(墙壁)或黑色(地板) 在画布上的适当坐标处形成正方形。如果您已经看到它的链接,这类似于apps-for-android Amaze 游戏。然而,他没有在他的瓷砖上放置墙壁类型检测,而是重置游戏并在用户滚动到“空”瓷砖上时扣除生命值。

但是,我希望有“墙壁”而不是“空隙”。如果球碰到墙壁,它不会超过那个点,但仍然可以在另一个轴上自由移动。当然,除非它撞到角落。

我遇到的问题实际上是创建此检测。我尝试了多种方法,但到目前为止没有任何方法成功或有用。

我尝试过: - 有一个包含墙砖所有坐标的 ArrayList,并且每次游戏滴答声,它都会检查球是否接触到一个。然而,这只是让游戏慢下来,非常糟糕。- 检查球在哪个瓷砖上,如果它在墙瓷砖上,让它停在一个轴上,但让它在另一个轴上自由移动,但这仍然不起作用,因为当球在时出现了一些问题在墙砖的右侧,但也在其下方,它无法向上移动,因为代码检测到它在球下方。

还有其他一些方法,但我真的不记得了!有点忙。

所以,我在问,如果有人在这方面有任何经验,请他们给我推动正确的方向吗?我希望能在周二之前对迷宫墙进行分类,但它看起来很糟糕!

如果您需要更多信息,请询问。

预先感谢您的任何和所有回复。

4

1 回答 1

1

与其拥有一个必须迭代的 ArrayList,为什么不以与文本文件相同的方式存储迷宫呢?使用填充true了墙壁和false地板的 2D 布尔数组,反之亦然。

这大大简化了查找墙壁的过程。您所要做的就是弄清楚球在网格中的位置。然后你可以检查它周围的细胞。即使您包括对角线(这对于全 90 度迷宫来说可能不是必需的),这也等同于检查数组中的 8 个布尔值,基本上是即时的。

至于轴的问题,就停止那个方向的运动。无需冻结整个轴。例如,如果墙是你的权利,只是不允许x走高。除非左边有一堵墙,否则没有理由不让它降低。

不过,这只是一个普遍的想法。因为这是家庭作业,所以没有代码给你;)

编辑:

2D 阵列就是这样,boolean[][]它适用于您想要墙壁的每个位置。当您读入文本文件时,只需立即分配它。

假设文本中的每一行对应y一行,并且每个 0/1 是该x列的,当您阅读 a 时1, assign map[x][y] = true

老实说,我不确定您还需要详细说明什么。不过,这是制作基于图块的简单地图的常用格式。如果你用谷歌搜索“2d array tile map”,你会找到一些资源来帮助它。

于 2013-03-18T02:51:38.530 回答