好的,所以我正在创建一个球倾斜游戏,你可以在迷宫中导航球。球是有效的,并且在该区域都很好但是我在迷宫中遇到了一些问题。
迷宫是通过.txt文件以编程方式创建的,该文件包含1和0(1是墙,0是地板。)我有一个for循环遍历整个.txt文件并放置一个白色(墙)或黑色(地板)正方形在画布上的适当坐标。这类似于app-for-android惊奇游戏,如果你已经看到它link.但是,他不是在他的牌上放置墙型检测,而是只重置游戏并扣除生命点,如果用户滚动到一个'虚无'的瓷砖。
然而,我希望有'墙'而不是'空洞'。如果球接触墙壁,它不会超过该点,但仍然可以在另一个轴上自由移动。当然,除非碰到一个角落。
我遇到的问题实际上是创建此检测。我尝试了很多方法,但迄今为止没有任何方法成功或有用。
我试过了: - 拥有墙砖所有坐标的ArrayList,以及每个游戏标记,它会检查球是否正在接触一个。然而,这只是让比赛变得缓慢而且非常可怕。 - 检查球是什么样的瓷砖,如果它在墙砖上,要在轴上停止但让它在另一个上自由移动,但这仍然不起作用,因为当球是有一些问题在墙砖的右边,也在它下面,它无法向上移动,因为代码检测到它在球下。
还有其他一些方法,但我真的记不住了!这有点忙乱。
所以,我问,如果有人在这方面有任何经验,他们能不能给我一个正确的方向?我希望迷宫的墙壁在星期二排序,但它看起来很严峻!
如果您需要更多信息,请询问。
提前感谢您的回复。
答案 0 :(得分:1)
为什么不像处理文本文件那样存储迷宫,而不是让你必须迭代的ArrayList?使用填充true
的二维布尔数组作为墙,false
填充地板,反之亦然。
这大大简化了找墙。你所要做的就是弄清楚球在你的网格中的位置。然后你可以检查它周围的细胞。即使你包括对角线(这可能不是全90度迷宫所必需的),这相当于从阵列中检查8个布尔值,基本上是即时的。
关于轴问题,只需停止那个方向的移动。无需冻结整个轴。例如,如果墙是你的,那就不要让x
更高。没有理由不让它降低,除非左边有一堵墙。
但这只是一个普遍的想法。因为它是家庭作业,没有代码给你;)
修改强>
2D数组就是这样一个boolean[][]
,它在你想要一个墙的每个点上都成立。当您阅读文本文件时,只需立即分配即可。
假设文本中的每一行都对应y
行,并且每个0/1都是该列的x
,当您阅读1
时,请指定map[x][y] = true
}。
老实说,我不确定你还需要详细说明。不过,这是执行简单的基于图块的地图的常见格式。如果你谷歌“二维数组瓷砖地图”,你会找到几个资源来帮助它。