本节介绍这个游戏的核心,如何寻路!很有意思的一节!
在SL上显示若干个小图标 可以点击小图标并标识选中的图标 两个相同图标间的连线(寻路功能、判断是否存在两图标是可连接的) 计时功能,游戏开始后,需要显示离游戏结束时的剩余时间。
我这样考虑寻路功能:
对于一个表情A,它怎么知道存在另一个表情B是与它相连的呢?!
最简单的方法,从表情A连一条线出去,在规则(连线可以弯二次)允许下一直延伸,直到触及一个表情为止。
这条线延伸时,会存在无数不同的形状。我们需要把所有形状都演绎一次,把所有可连接的表情找出来,并判断是否存在相同的表情。
方法确定后,我再做一些补充解释,以让大家更明白:
对于一个表情,旁边的CELL如果没有被另一表情占有,则是可连线的
如上图,上面的一个表情有四个相邻CELL为空,即:有四条线可以连接出去
或者说:查询这个表情的可连接表情时,需要查询四次,每相邻的未占用CELL都需要做一次查询。
我们现在从上面 CELL 1 处连接一条线,当这条线从表情连接到CELL 1 时,这条线接下来有三个可能的延伸方案,如下图所示:
相同的,每个方案再次延伸都会碰到多个方案(好多分支啊!)
不过,用递归很容易满足要求!
OK,开始贴代码之前,还有一个要处理:
在CELL容器放置表情时,一定要成对成对的放置。(要不然,会有表情消除不掉)
并且,放置时,一定需要随机放置
看代码吧,相比上一部分,改动有点大
主要的初始化工作流程如下:
在程序运行过程中,每次点击都会判断是否有需要消除的表情。
当鼠标点击一个表情后,流程如下:
代码如下,这里是整个文件的代码:
欢迎各位问题
希望大家看明白了 :)
至此为止,已经主要功能完成了!剩下的都是一些完善的功能,如:计时功能、计分功能...
总结以上是内存溢出为你收集整理的用SilverLight实现 连连看 游戏 (3)全部内容,希望文章能够帮你解决用SilverLight实现 连连看 游戏 (3)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)