
最近用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维拼图游戏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)