silverlight+wcf n维拼图游戏

silverlight+wcf n维拼图游戏,第1张

概述     最近用silverlight做个拼图游戏,找到一个参考网站http://www.silverlightshow.net/items/Silverlight-n-Puzzle-Game.aspx感觉介绍的非常不错,可惜没有源码参考,所以按照其主题思想做个。      1.开发环境vs2008+Microsoft Expression Blend 2,vs2008得安装sp1才会有有silv

     最近用silverlight做个拼图游戏,找到一个参考网站http://www.silverlightshow.net/items/Silverlight-n-Puzzle-Game.aspx感觉介绍的非常不错,可惜没有源码参考,所以按照其主题思想做个。

     1.开发环境vs2008+Microsoft Expression Blend 2,vs2008得安装sp1才会有有silverlight模板工程

     2.先新建个silverlight工程,其会附加一个web测试的工程,然后再建个wcf的图像服务工程

     解决方案结构:

    

     3.下面开始讲讲原理了,先看看各个类的结构图

首先有个PuzzlePIEce类,其主要是拼图中每个块的类(当时受上面文章介绍的影响,其实主要作用的应该是那个用户控件uctrlPuzzlePIEce),该类有个静态成员NullPuzzlePIEceInstance表示拼图中那个空白块,该类主要是个实体类没什么;然后创建一个IPuzzleModel接口,其主要负责整个游戏的逻辑,包括游戏的拼图打乱、重置、判断输赢、玩家事件等,PuzzleModel实现PuzzleModel接口,下面讲讲PuzzleModel中的方法实现

1)CheckForWin,很简单,先检查空白块是否在右下角,然后foreach所有块,看其number是否等于(row-1)*拼图维度+column

2)GetMoveStatus,就是被检查的块和NullPuzzlePIEceInstance的位置比较,然后得出其能移动的方向

3)IsEmptyCell,受上面文章影响,好像没用到

4)Mixpuzzle,为了使拼图可解,不能随意打乱,因为有些情况是无解的,所以这里采用模拟打乱的方法,主要就是从完整的拼图随即一个方向(x或y),把空白块朝某个方向连续移动随机个位置,就可以模拟打乱了

5)MovePIEce,就是将一个块移动,其会根据其可以状态移动

6)PIEceMoveEvent+OnPIEceMoved,触发移动事件

7)resetPuzzle,使游戏中的所有块位置重置 就是Number=(row-1)*拼图维度+column,并使移动计数器清零

 

拼图块封装成一个用户控件,易于 *** 作,其代码:

其中有些渐隐的效果,主要是用Storyboard来做

如放上去的效果:

然后就是用wcf获取游戏图片和分割图片,wcf跨域访问得需要一个clIEntaccesspolicy.xml@R_502_6179@,具体内容:

wcf中图片分割函数和上传图片函数:

 

运行效果:

 

最后想说的是,我刚做出来后,刚才那个网站就把源码发布了,真晕。。。。

源码下载

总结

以上是内存溢出为你收集整理的silverlight+wcf n维拼图游戏全部内容,希望文章能够帮你解决silverlight+wcf n维拼图游戏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1051589.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存