初学WPF,需要一个小程序来锻炼自己,而贪吃蛇是每一个小白(包括我自己)必学的经典案例,此文就来介绍一下,接近完美的贪吃蛇是如何制作的 . . .
学习源于赵庆明老师的课程(腾讯课堂)

此文将只对游戏重要的部分进行讲解, 完整源码可在 GitHub 中查看:

GitHub --> Gluttonous-Snake


效果效果如下:

其中这个游戏是有声音(吃到东西的声音,游戏结束读取分数的声音). . .

各种音效可到 爱给网 中下载,完全免费 . . .
比如吃东西的声音、游戏结束的声音(没有进入高分榜、进入高分榜等)各种各样的声音 . . .

让游戏变的更加有趣 . . .

.

这个程序的核心部分就是 蛇的移动高分榜语音合成(XML 文件的读取与存入) . . .

蛇的移动有两种方式:

  • 真正的移动(每一节蛇身 移动到前一节蛇身的位置)
  • 障眼法(蛇其实没有移动)

此文将使用障眼法来对蛇的移动进行操作,那么这个障眼法移动蛇是如何工作的呢?
下面这个图将解释这个障眼法原理:

图中 1, 2, 3 表示的分别是:

  1. 删除蛇的尾巴
  2. 将蛇头变成蛇身的颜色
  3. 添加新的蛇头

我们只需要反复的进行上面的操作,就可以造成蛇移动的假象 . . .


游戏核心部分详解

  1. UI 界面我们采用 Canvas 进行布局,因为它可以进行 绝对定位,可以利用元素的坐标将元素放在界面的任何地方:

    对 Canvas进行 布局,访问他的名字(GameArea进行操作) . . .

  2. 游戏地图部分(那些小格子):

  3. 画蛇:

    这个方法调用的比较频繁,因为蛇每移动一次,这个方法就要调用一次 . . .
    方法解析:当我们使用障眼法插入一上新蛇头时,这个蛇头还没添加到地图之中,所以我们在画蛇的方法之中,需要判断一下,并且判断颜色(蛇头与蛇身不一样) . . .

  4. 蛇的移动(核心部分):
    每一行代码都加以注释 . . .

  5. 蛇的其它操作在此处就不写了,主要就是一些细节上的实现,并不是太复杂 . . .

    比如下面的这些方法实现:

    • 游戏结束的判断
    • 蛇吃到食物的判断
    • 更新游戏分数
    • 开始新的游戏
    • 画出食物
    • 键盘按下改变蛇的方向
    • 游戏的暂停
  6. 高分榜(对 XML文件的操作):
    第一方法是将高分榜中的数据保存到 XML文件之中,Xml文件的 序列化操作,取前五名 . . .
    第二方法是将 XML文件中的数据加载到程序之中,Xml文件的 反序列化操作 . . .
    第三方法是将一个数据添加到高分榜之中,并进行逆序排列 . . .

  7. 语音合成部分:

    在游戏结束的时候,我们判断这个分数是否进入了高分榜,如何进入则利用语音合成报出分数:


.

源码在 GitHub之中,大家可以自己查阅 ^ _ ^ . . .

WPF制作贪吃蛇小游戏相关推荐

  1. C# 制作贪吃蛇小游戏,最简单的实现

    C# 制作贪吃蛇小游戏 目录 画蛇 实现蛇的上下左右移动 随机生成目标物 开始游戏 计分 重新开始 增加难度 死亡判定 1.1 画蛇的一节 Class Element()Graphics g;publ ...

  2. JavaScript制作贪吃蛇小游戏

    目录 效果展示 原理分析 Game.js文档 Snake.js文档 Food.js文档 附上源代码 写了这么久的代码 是否你和我一样感到枯燥乏味了呢? 是否没有前进的动力了呢? 别忘了当时的你踌躇满志 ...

  3. 51制作贪吃蛇小游戏,附带Proteus仿真

    一.代码解读 一个按钮来启动游戏的开始,开始以后LCD1602上显示当前的关卡和得分,当长到一定长度后会进入下一个关卡,每个关卡移动的速度不一样(越到后面速度越快,用到定时器) 有关蛇和食物里的属性都 ...

  4. python制作贪吃蛇小游戏,畅玩无限制

    前言 大家早好.午好.晚好吖 ❤ ~ 现在这年头,无论玩个什么游戏都有健康机制, 这让我们愉悦玩游戏得步伐变得承重起来, 于是无聊之下我写了个贪吃蛇小游戏,来玩个快乐 代码展示 导入模块 import ...

  5. 基于html5贪吃蛇小游戏,使用HTML5 Canvas制作贪吃蛇小游戏

    近重要在研究OAuth2,等demo完成了,会给大家来一个专题分享. 看到我身边的一个同事在玩 蛇蛇争霸 感觉蛮有意思的,这里找了一个 贪吃蛇的游戏 分享给大家. 按理说canvas与其应用是老生常谈 ...

  6. Unity制作贪吃蛇小游戏

        从开始学习到现在也做了不少小游戏,但是很多都堆积再同一个项目中,并且还有许多不完善之处,所以最近会逐渐发上来一些之前做的小游戏,希望对大家有所帮助. 今天发上来的是最开始做的一个,也是挺经典的 ...

  7. 大学生的小乐趣:html画布制作贪吃蛇小游戏

    源代码已存放在github上:https://github.com/WYKXLDZ/CollegeJoy/tree/master/snake 最终效果: 做贪吃蛇游戏需要Html5,部分Css美化,重 ...

  8. 贪吃蛇小游戏制作(5)

    贪吃蛇小游戏制作(5)-给游戏场景添加可视的边界

  9. 100行代码,使用 Pygame 制作一个贪吃蛇小游戏!

    作者 | 周萝卜 来源 | 萝卜大杂烩 相信我们大家都玩过贪吃蛇游戏,今天我们就从头一起来写一个贪吃蛇小游戏,只需要100多行的代码就完成了. 用到的 Pygame 函数 贪吃蛇小游戏用到的函数 功能 ...

最新文章

  1. 如何快速优化机器学习的模型参数
  2. Linux设置程序开机启动-tomcat开机启动
  3. 语言auc_Phoenix建模语言(PML)中AUC的计算方法
  4. 每日英语-7/21/2009
  5. 女儿问了我一个问题:什么是抽象?
  6. ❤️时间管理大师!我是如何规划自己的时间的?充分利用每一分一秒!❤️
  7. php登陆项目,ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)
  8. 变结构滑模控制抖振处理(1)------动态滑模法
  9. [Web Chart系列之一]Web端图形绘制SVG,VML, HTML5 Canvas 技术比较
  10. 误Ghost数据恢复图文教程
  11. NOSQL,MongoDB是什么?
  12. html embed自动播放,embed嵌入多个优酷视频并自动播放
  13. 你的编程能力从什么时候开始突飞猛进?
  14. C语言实现客房管理系统
  15. 利用Xenu查询网站死链
  16. tcpreplay linux,Linux——Tcpreplay
  17. 14.1 来自Bitly的USA.gov的数据(2)
  18. SPA项目开发之CRUD+表单验证
  19. java快速生成数据库文档
  20. openwrt配置文件选项 /etc/config/wireless

热门文章

  1. python相关库快速下载
  2. 【JZOJ100208】【20190705】传说之下
  3. linux滚动升级版本,Linux发行基础滚动版本与标准版本 | MOS86
  4. PyTorch读取自己的本地图片数据集训练自编码器
  5. 【UOJ #198】【CTSC 2016】时空旅行
  6. 问题复盘:一个Redisson驱动源码BUG
  7. 首页数据展示前端页面
  8. offlineimap读取qq邮箱
  9. vue 中deep使用
  10. 用前端代码编写一个动态的罗盘时钟