**其实扫雷说是使用pygame写游戏,但其实这非常锻炼思维,一个编程与解决问题的思路的养成非常重要,这篇文章的主要内容不是讲解功能的实现方式,而是介绍我遇到的一些问题**

我自己的界面设计的能力有点差,所以在界面设计部分我借鉴了《python写扫雷小游戏(pygame)》—— 在校学渣一枚这位朋友的,再次表示十分感谢

好了,闲言少叙,一部分一部分的上

这个扫雷的主要实现思路就是用pygame划出格子后,界面上格子的行数列数,与另外一个二维列表的对应关系。

1. 难度选择界面




python雷电游戏代码 pygame扫雷代码详解_二维


import


这部分其实就主要是界面的绘制以及事件的确定,本身没有什么难度,都是一些简单的用法,整体在不到100行,这也是扫雷游戏的登入部分。

2. 接下来就要将整个游戏分块考虑并且编写,首先我把布雷部分写出来,这部分并不是很难,甚至可以说是最简单的,我是个初学者,五六十行就可以实现。


import


布雷的部分实际上就是分等级并排出不同数量的雷

这里我遇到最大的问题就是“a = 0” 这一句,这里是想通过一个遍历的方法,数出十个雷,确保没有重复,但实际上random好像是有这个函数的,但是也有一定bug,还是要通过一些方法规避,如果没有这一句的话,a实际上是一个类加量,并不会真正布十个雷,初级4个,中级9个,高级14个,所以在计算之前一定要将其初始化为0

3. 点开事件

在扫雷游戏中,我们在点到一个非雷格子的时候,有的会出现数字有的会直接点开一片,在明确这个规则之后,我们就可以开始编写了


import


靠通过审查周围雷的数量填入数字,如果为零就计算他周围的进行循环计算,这样就可以实现点开一大片。

问题:

- [ ] a、最初,当计算周围的时候在周围的两个空格子无限死循环下去。**解决方法:将为零的格子转换为空格,只计算内部内容有长度的格子。**

- [ ] b、但是,之后发现int变量是没有长度的,**就只好将所有的内容全部变为字符串,原本用9表示雷,现在则用'9'表示。**

这个部分实际上最重要的就是判断标准的确定,需要仔细地进行思考。

4. 主体游戏

好吧,我承认我的架构思路确实略有问题,原本是想把不同部分分开的后来在调试优化过程中,就逐渐的加到一起了。。。


import


python雷电游戏代码 pygame扫雷代码详解_pygame render怎么显示中文_02


游戏主体部分包含胜负判断

最大的问题在于、标记时会影响判断,最一开始的标记是把二维列表中的值改编为10就会影响每个格子里的值,所以后来我又建立了另一张二维列表,专门存放旗子,这样就可以将他标记完成并不影响值。

最终还想实现战绩记录,每个模式的最短时间,以及胜率。这个部分连上界面优化就比较简单了,所以就日后慢慢进行吧。