[易语言] 六边形扫雷游戏实战开发

易语言是中国国产的编程语言,广泛用于外挂的制作,我有幸学了一点,运用自己的知识做了个六边形扫雷的小游戏。

玩法方面,和Windows自带的扫雷几乎很像,由于比较懒惰,就没加双击自动扫雷和扫雷排行榜等非核心功能板块,就是点击空白块扫雷,显示周围的雷的数目这样子。  

首先是背景那个六边形的图,我的想法就很简单,用PS画一个呗,就这么完成了背景,然后就是图标啊、雷的图片、数字图片等等小图标,统统用PS很快就画完了,但是由于我的粗心,我的六边形并没有画成正六边形,也正是这次粗心,为我后来的算法提供了极大的方便。

        背景什么的解决了,下面就改解决定位的问题了。我的想法是将每个六边形的中心用坐标进行位置确定,这个应该不难,其实就是高中学过的等差数列嘛,x轴和y轴坐标都是等差数列,很快实现了定位。但是我们可以通过我的图片看出,有些地方是半个六边形的区域,这些区域我打算写个函数判断鼠标是否出现在了这些区域然后将这些区域的鼠标点击PASS掉,当然也是通过等差数列写循环做到的。上面说了,由于不是正六边形,每个六边形的长和宽相同,坐标自然就是长宽的一半去加前面的a1了,给我的定位提提供了极大的方便。    

        然后就是布雷的问题,我想要的布雷效果是实现布雷布重复,这个我之前想了个二维的布雷算法,就是坐标x和y分别取随机数进行布雷,发现这样布雷的话重复的太多了,于是就想了个一维的布雷算法,首先生成一个数组,数组的组成是1-数组的长度,然后从1-数组的长度的数中取一个随机数,用这个随机数在坐标数组中定位这个点设置为雷区,重点来了,将这个成员删除掉,当我们布完一个雷之后,就将这个数字从数组成员中删除掉,这样我们就不会再取到这个数字了,因此不会重复。这是去重复去取二维坐标的算法,因为生成位置坐标在前,因此给我们随机生成雷的坐标提供了方便,不然我真准备去找个算法生成随机约束的坐标呢。,    

        然后就是点击空白区域后的自动扫雷算法,当然是采用递归了,先定义一个六个成员的数组,数组的成员值为横纵坐标的偏移值,然后写个次数为6的循环,我们每点击一个空白区域,空白区域的周围雷数为0的话,就自动去侦察周围六个方向的格子是否有雷,如果有雷,就停止继续侦察,如果没雷,就递归侦察,直到侦察到周围有雷的格子,还有就是,要注意不能让侦察的区域超出范围了。

        然后就是鼠标点击定位,这个很简单,让我们之前的坐标与鼠标的位置坐标之间求距离,距离小于某个半径,就把鼠标点击的位置定位到某个之前生成的位置上去,这个位置就是我定义的有效鼠标点击位置。

        然后就是胜利条件判断和失败条件判断了,由于不是核心程序,就不多说了。

        然后去测试,发现如果雷多的画,首次点击很容易点到雷,于是将布雷的操作放在了第一次点击之后,果然,第一次点击之后不再中雷,都很顺利了。

      整个开发过程并不复杂,程序写的也不麻烦。

程序下载:https://pan.lanzou.com/i0pb70d

源码下载:https://www.lanzous.com/i27eepc

原文地址:https://www.cnblogs.com/aoru45/p/9861021.html