为了好玩,我正在实现一个贪吃蛇游戏,我已经成功实现了蛇,它的动作和蛇的增长因为它吃了一个苹果。贪吃蛇游戏 - 如何计算下一个苹果位置
要计算苹果的位置我正在以下步骤:
- 创建一个新的苹果对象
- 创建随机坐标(X和Y,游戏容器边界之间),为苹果
- 检查苹果的坐标是否等于其中一个蛇形块坐标
- 如果步骤#3为TRUE,则重新计算苹果的位置,否则在游戏容器中绘制苹果
不幸的是,我发现,这个算法是非常弱的..让我们说我有一个10×10的比赛容器,红色正方形是苹果,绿色广场是我的蛇头(游戏初始状态)
随着比赛的进行蛇吃越来越多的苹果,增加其长度,留下少空单元格将一个苹果
现在假设蛇REA吃苹果时,长度等于99。这意味着有只有一个广场左侧放置下一个苹果。我的算法(显然这是最糟糕的情况)可能会永远存在,以便随机化正确的值,因为它放弃了已经被蛇的头部或尾部采集的任意随机位置,而不是关心随机化一个范围内的新位置只有“空细胞”,而是在整个10×10的游戏画布上随机化。
我应该如何着手解决我的busillis?你能给我任何关于我可以使用的好算法的建议吗?
谢谢
我现在能想到的最简单的解决方案是制作一个自由坐标列表并从中随机选择它们? – mkabanen 2015-02-23 23:15:47
@kabanen:实际上这是最好的解决方案:-) – Bergi 2015-02-23 23:17:32
我认为这不是最佳的,因为每次蛇移动时都必须刷新此列表,删除占用的单元格(我必须扫描列表才能找到单元格)并添加释放的。我错了吗? – BeNdErR 2015-02-23 23:17:42