flash游戏中的数学问题

LongLongAgo,在做泡泡龙游戏的时候,发现数据结构的好处。使用树结构的数学模型可以清晰的描述逻辑处理方式。比如在判断是否有球掉落的时候,见下图,就可以用这样的数学语言描述:“对某个球而言,不存在一条路径到达root”。root就是最顶层。

泡泡龙

泡泡龙

如果这样的球存在的话,就说明它是“浮空”的,也就是说可以掉下来了。

这类的数学描述在很多领域都用过,记得flash的垃圾回收机制么,原来使用计数法来判断一个对象要不要被消灭,如果用在displayObject树结构里就不够了,因为它们可以相互引用,于是,用上面所说的数学描述就成了很好的补充,跟泡泡龙的原理类似,如果有一个displayObject不能到达root的话,它就脱离了显示树,就该被消灭,而不用管计数是多少。

回到泡泡龙的问题上来,一个被发射上来的球可以看成一个根节点,当它被打到一堆球当中的时候,一个树结构就形成了:以这个新球为根,周围的六个球为第一层子节点(可能某些是空,或者重复应用,需要剔除),然后使用广度优先或者深度优先遍历来查找“通往root的路径”,再加上些优化,就能实现这种数学描述,从而完成“掉落”这个游戏功能。

数学在flash游戏中无处不在。此乃往事,特此笔记。

RELATED POSTS

Leave a Reply