原文:WPF 2048游戏的实现

        前几天空闲的时候,实现了一个2048游戏。除了可以设置行数和列数之外,支持修改显示名称,比如下面,改成神雕侠侣中的角色名称:

 

        游戏逻辑比较简单,大家都应该玩过。

        这里主要实现了四个类:Game、GameBoard还有ColorBlock和BoardGridLine。

        Game类主要用来实现游戏的控制,比如初始化、添加新的色块、移除色块、控制色块上下左右移动、改变积分,触发游戏结束等。

        GameBoard继承自Canvas,实现了色块的合并、检测每个格子的状态等,另外提供了Game控制色块移动的接口。

        ColorBlock类继承自Shape类,用于自定义色块的显示,包含XY坐标、颜色、显示文字等依赖属性,可以进行动画,另外还实现了具体的上下左右移动的方法。最初几个颜色是手动设置,等到色块越来越多,就随机生成一种颜色。

        BoardGridLine也继承自Shape类,用于绘制Canvas底部的网格。

        另外,游戏使用一个简单的文本文件保存设置,包括行数与列数,以及显示文字及其对应颜色,具体操作在Settings类中。

        最后,按键事件封装在KeysNavigation中。

        图标使用Expression Design制作:

 

        游戏效果如下:

 

源码下载地址:

http://download.csdn.net/detail/xiangshimoni/8278267

 

 

最新文章

  1. APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
  2. /etc/sysconfig/下找不到iptables文件解决方法
  3. CentOS配置Nginx+Tomcat7的多站点支持
  4. 机器学习库shark安装
  5. 根据执行计划优化sql语句
  6. Linux学习之路:shell变量(一)
  7. [IoLanguage]Io Programming Guide[转]
  8. jQuery插件开发 格式与解析2
  9. UNIX 技巧: UNIX 高手的另外 10 个习惯
  10. Rhel6.6---执行命令df -h卡住不动
  11. C# UserControl集合属性使用
  12. js获取当前星期几
  13. Linux设备驱动剖析之IIC(二)
  14. 2018.4.2 sqlite优化
  15. Hibernate @Entity注解配置说明
  16. 拓展javascript内置函数
  17. js+css+div的点击后显示或者隐藏
  18. 矩阵快速幂——POJ3070
  19. C++中如何强制inline函数(MSVC, GCC)
  20. 如何使用Node爬虫利器Puppteer进行自动化测试

热门文章

  1. SQL _join on 和where的执行顺序
  2. Javascript-简单的计时钟表
  3. 干货来了!2019阿里云合作伙伴峰会SaaS加速器专场回顾合集:嘉宾分享、深度解读
  4. loj2324 「清华集训 2017」小 Y 和二叉树
  5. SSM-8FastDfs搭建
  6. 前端js错误日志收集
  7. html文档加载顺序简单理解
  8. Java review-basic1
  9. Java review-design pattern
  10. 【P1203】 【USACO1.1】坏掉的项链Broken Necklace