【C#】扫雷游戏编程

一、概述

最近买了心机NOKIA6300,上面有一款扫雷游戏,闲暇时光总是在玩,玩难度的级别还挺难过的。呵呵

 

后来就想使用C#写个扫雷程序玩玩,游戏玩多了,游戏的思想就不知不觉的有了,下面所有的代码是没有任何参考的情况下,自己写出来的,有许多瑕疵,程序也没经过什么优化,主要的算法思想其实就那么几行。

 

先给出程序的运行界面,要添加一些控件,这里就不啰嗦了,程序本来有源码,但是,为了方便,我将所有的代码都写在了Form1中(这个习惯不好,嘿嘿)。

 

扫雷运行图

 

二、编程思路

程序主要的是Bound这个类,继承了表单中的Button类,我感觉就用按钮来模拟类比较快,仅仅是考虑快,也许有其他的方法,主要是因为Button控件本身就有单击事件,扫雷就需要这两个事件,如果自己写,可能要写这两个事件。

 

雷阵需要有一个数组雷存储其状态,代码中都有说明了,数组中的每个下标都和雷有对应关系,所以,我给所有的雷添加了X,Y的属性,这个做是方便雷的定位,在计算周围雷数时非常有帮助。

 

添加了雷阵数组后,有两个事情比较重要:一、随机生成雷的分布,这个算法有很多,我是用自己感觉比较简单的算法,将所有的雷随机的放在没有雷的位置上,就这样。二、计算周围雷数;在放置了雷后,要计算这个雷周围的数字,一共是八个位置,其实很简单,只要有雷的位置,它的周围框都加一就好了,但是注意判断条件就好了,只要这些框在0-MAX的范围内就好了。

 

在初始化了雷阵后,剩下的就简单了,添加雷的左击时间和右击时间,判断是否踩到雷,是否扫到雷等等。

在扫雷中还有一个比较重要的算法是对扫雷的递归,在扫雷游戏中,如果一个雷上的周围雷数是零,就可以将它周围的所有的格子翻开,(因为没有雷嘛),和计算周围雷数的方法一样,只是这里调用的是递归的方法,只要给按钮设置好是否已经翻开的状态就好了,翻开的按钮就不进行递归操作了。

 

三、小结

游戏设置了游戏的时间,这个是游戏扩展趣味性的问题了,可以根据这个做个排行榜,游戏还可以设置一些难度分级,我看了手机游戏,雷数和阵列数比例为1:9的难度较低,比例为1:4的难度就较大了。游戏要根据这些参数来动态的变化这些数据,增加游戏的可玩性。

自己在C#上写的第一个游戏程序,有点信心了,呵呵,和新手共勉。

文章原创地址:http://blog.csdn.net/much0726/archive/2009/04/20/4093519.aspx

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值