如何开发一个扫雷小游戏?

来源:互联网 发布:给json对象添加属性 编辑:程序博客网 时间:2024/06/06 03:57


如何用C#开发一个扫雷小游戏?


十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师。

初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供的各种功能的官方函数。所有用来变魔术的道具、材料都有了,可为什么还是觉得少了点什么?

当你已经掌握了大多数编程知识,却还是觉得无法独立开发出一个实用程序的时候,你仅仅缺少一次试炼!你需要的只是扔掉书本,寻找一个能够激起你浓厚兴趣的切入点,然后排除万难的实现一个相关的程序,并且尽量少的借助“外力”。如果你喜欢玩游戏,那么自己动手写一个小游戏吧,想想都酷炫!

今天整理硬盘文件的时候,不经意的发现了一个不起眼的文件夹:“扫雷1.0”。这是个元老级的程序,在大二前的那个假期,游戏和学习一直是我难以平衡的两件事,庆幸的是我找到了突破口。借着我对于游戏的酷爱和执着,用了整整一个假期的时间写下了这个如今看来几天就能搞定的小程序“扫雷1.0”。这个程序对我的意义便是从学过编程到能够编程的变化。

上面这段话写给初入团队学习编程的学弟,也写给急于在找工作前提升实力的自己。其实是想说,在面对一个还没有掌握的新技能时,要利用兴趣寻找突破口进行实战,总是想着它有多难永远没有和它较量一下来的有效。

再次看到这个程序,确实有点小激动,于是花了些时间整理了下当初的代码和思路。下面回到正题,本文介绍如何用C#开发一个扫雷小游戏。如果你需要代码,可以到我的Github账户上下载:https://github.com/monkeyDemon/MineSweeping


需求分析

在写一个程序前,首先要对你要实现的需求有着清晰的认识,理清各个需求间的逻辑。

对于一个已经存在的扫雷游戏,我们不妨观察一下一个真实的扫雷游戏是怎样玩的。观察下面的两个游戏截图。

由上面两幅截图可以分析出:

我们需要定义两个最核心的模块:小方格Pane和放置所有小方格的整个雷区MineField。小方格要整齐的排列在雷区中,一部分小方格中被随机的放置了地雷。

小方格的实现需求:

首先,小方格有三种状态:

关闭状态(初始状态)

标记状态(用户右键标识有雷)

打开状态(用户左键点击后的方格,无雷的情况下需要显示周围雷的个数)

于是定义枚举类型PaneState对应标识小方格状态。

小方格Pane,主要需要以下三个属性:

周围雷的个数

本方格是否有雷

本方格的状态PaneState

对于我们的简单程序,小方格可以通过继承Button来实现。

小方格主要需要以下三个方法:

标记有雷

打开此方格

还原标记(已经被标记有雷的方格被再次右键点击)

按此框架可以实现小方格Pane类:

雷区的实现需求:

小方格全部部署于雷区,是雷区的子组件,所有需要多个方格联动的方法都要在这里实现。

首先是初始化方法Init

通过整齐排列方格LayoutPane和随机布雷LayMines来实现。

然后是获取周围雷数的方法GetAroundMineCount

玩家点击了没有雷的小方格后需要显示该方格周围的雷数。

再然后是打开周围区域方法DisplayAround

当玩家点击的小方格周围一大片区域都没有雷时,应当帮他全部展开。这个方法的实现算是唯一有点难点的地方了,需要用到递归。

最后要实现一个展示整个雷区的方法DisplayALL

当玩家失败时,向其展示整个雷区分布。

主要方法已经描述,按此框架可以实现雷区MineField类:

程序展示

过多的细节就不做介绍了,一起来看下完成后的效果吧!

  
  
  




0 0
原创粉丝点击