深度探索游戏“泡泡龙”的算法!

scv 2002-04-25 08:00:08
喜欢玩泡泡龙的朋友一点考虑过它的算法吧,一个球受到另一个球的阻挡自然就停了下来,可是这个说得容易,真正实现起来还是有一点困难的,一般的想法是这样的:每隔一定的时间,计算当前球(就是正在抛射的球)与上面的死球的圆心的距离(以屏幕上的象素点为坐标),如果距离是2R的话就停在当前的位置(当然其中也没有这么简单,有心的朋友也许发现了,其实每个球死了的时候,位置都有规律,我的意思是说每行都有固定的位置,一行七个,下面一行八个,如此的排列),不过我发现这种算法真是土了点,我想问问大家有没有更好的算法,使球停下来的更好的算法!

PS:把这些球放在一个二维数组里我也想过,不过那种方法好像对俄罗斯方块很有效,对于泡泡龙不灵,因为用我的这个算法,当球发射出去的时候就与数组完全没有关系了:(
...全文
543 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyRo1984 2010-05-28
  • 打赏
  • 举报
回复
很好的
scv 2002-05-05
  • 打赏
  • 举报
回复
上面的哥哥们有源程序么,有的话请留言
大家一起研究研究!
nethermit 2002-04-26
  • 打赏
  • 举报
回复
“万一当前发射的球在两个格子中间,我把这个球算在哪个格子里了?”
不会出现这种情况:)
先搞清楚球如何停下来,是在满足这个球和另一个球的距离<=2R的情况,球就已经停下来了!由于之前所有球都在格子上,所以球在两个格子中间是不可能的。
然后进入微小位移部分,将球位移到最近的一个格子。
然后进入消去程序,放心吧,如果可以消去的话这个球肯定要消去的。
消去程序应该是很简单的,这里就不论述了。
scv 2002-04-25
  • 打赏
  • 举报
回复
TO :Elminster()

你的意思是说只能以格子为单位移动

万一当前发射的球在两个格子中间,我把这个球算在哪个格子里了?
scv 2002-04-25
  • 打赏
  • 举报
回复
消去的算法要用到递归,我觉得Elminster() 的方法太好了

回去试试看!

呵呵
nethermit 2002-04-25
  • 打赏
  • 举报
回复
就是自动捕捉问题啦,球先停下来,然后判断距离数组里面哪一个近,然后位移过去,都是这样的啦,仔细观察,外面的程序都是这样最后有一个微小的位移,这样的程序我也编写过,不过是编写桌球游戏,球入袋的时候也是这样的。
xx_xuxiandi 2002-04-25
  • 打赏
  • 举报
回复
楼上的哥们的做法,觉的挺好,然后再不能行动的时候判断一下是不是可以炸掉几个,如果可以炸的话,再将某些球上移,
Elminster 2002-04-25
  • 打赏
  • 举报
回复
用不着搞得那么复杂,把空间划分,一行 n 个格子,一行 n-1 个格子,交错的摆放(想象一下上面塞满球的样子,每个球一个格子),然后移动的时候判断自己在哪个格子里,如果周围所有格子都是空的,那么继续前进,否则停下。
scv 2002-04-25
  • 打赏
  • 举报
回复
我知道呀,可是怎样使球停下来了?

如果不用以上的算法……

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧