球与球之间的碰撞检测迷宫由文本文件动态制作

时间:2013-03-17 23:56:32

标签: java android maze

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

迷宫是通过.txt文件以编程方式创建的,该文件包含1和0(1是墙,0是地板。)我有一个for循环遍历整个.txt文件并放置一个白色(墙)或黑色(地板)正方形在画布上的适当坐标。这类似于app-for-android惊奇游戏,如果你已经看到它link.但是,他不是在他的牌上放置墙型检测,而是只重置游戏并扣除生命点,如果用户滚动到一个'虚无'的瓷砖。

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

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

我试过了: - 拥有墙砖所有坐标的ArrayList,以及每个游戏标记,它会检查球是否正在接触一个。然而,这只是让比赛变得缓慢而且非常可怕。 - 检查球是什么样的瓷砖,如果它在墙砖上,要在轴上停止但让它在另一个上自由移动,但这仍然不起作用,因为当球是有一些问题在墙砖的右边,也在它下面,它无法向上移动,因为代码检测到它在球下。

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

所以,我问,如果有人在这方面有任何经验,他们能不能给我一个正确的方向?我希望迷宫的墙壁在星期二排序,但它看起来很严峻!

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

提前感谢您的回复。

1 个答案:

答案 0 :(得分:1)

为什么不像处理文本文件那样存储迷宫,而不是让你必须迭代的ArrayList?使用填充true的二维布尔数组作为墙,false填充地板,反之亦然。

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

关于轴问题,只需停止那个方向的移动。无需冻结整个轴。例如,如果墙是你的,那就不要让x更高。没有理由不让它降低,除非左边有一堵墙。

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

修改

2D数组就是这样一个boolean[][],它在你想要一个墙的每个点上都成立。当您阅读文本文件时,只需立即分配即可。

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

老实说,我不确定你还需要详细说明。不过,这是执行简单的基于图块的地图的常见格式。如果你谷歌“二维数组瓷砖地图”,你会找到几个资源来帮助它。