初学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之中,大家可以自己查阅 ^ _ ^ . . .

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐