基本功能
实现Windows扫雷游戏的全部基本功能
扫雷尺寸为99,每个方格尺寸为3030
游戏初始化时,随机分布10个地雷
当左键点击雷区任意方格时,游戏开始
单击鼠标左键打开正方形。 如果是地雷,游戏就会失败。 如果不是地雷,则会显示其周围一圈的地雷数量(0-8)。
鼠标右键被标记为标志,此时左键单击没有效果。
再次右键单击标记为旗帜的方块,该标记将变成问号,代表一个问题。 这时候左键单击就有效了。
第一步默认不能踩地雷(如果是地雷则强制重新随机分布,直到不是地雷) windows
点击打开一个区域
当左键点击某个方格时,如果该方格不是地雷且其周围一圈的地雷数量为0,则其周围一圈的方格会自动打开,然后检查是否还有方格数字为0的,如果有,则继续在其周围开一圈正方形,直到不再有数字为0的正方形。(视觉效果相当于点击一个区域)数组
当鼠标左键和右键同时点击一个正方形时:
1)点击未打开的方块无效。
2)方格已经打开,获取方格的编号(1-8),然后检测周围的8个方格。
如果剩余未打开的方格==当前方格数,则会自动标记为标志。
剩余未开方格 > 当前方格数,无动作
如果剩余未打开的方格中标记的旗帜数量==当前方格的数量,则其他剩余未打开的方格将自动打开。 如果有地雷,游戏就会失败。
剩余未打开的方格中标记的旗帜数量! =当前方格的数量,无动作dom
其他功能
计时器:左键打开第一个格子时开始计时扫雷游戏设计,直至游戏结束(成功或失败)
地雷数量:每标记一个标志,地雷数量减1,允许地雷数量为负数。
游戏状态:游戏开始时正常表情扫雷游戏设计,游戏成功时笑脸,游戏失败时哭脸。 任何时候点击任何状态下的脸部都会重置游戏svg
游戏失败判断:如果左键打开一个方格,则为地雷,或者同时左键单击和右键自动打开一个未打开的方格,如果有地雷,则判断游戏有失败的。
游戏判定成功:所有地雷都使用flag正确标记,并且地雷数量显示为0(即没有多个flag)功能
主要功能模块实现思路
1)如何检测鼠标左右键同时按下
设置每个鼠标按钮(左键、右键、滚轮)的状态位并检测其按下和释放状态。
当按下鼠标左键且未释放时,并且检测到右键时,则认为两个按钮同时按下。
反之亦然.net
2)随机地雷分布
通过列表生成生成一个二维数组来表示矿井分布的行值和行值。
随机生成的二维数组可能有重复值3D道具,所以需要先将列表转为元组,然后使用set去重。
去重后数组可能小于10个,所以为了简化操作,初始生成12组值。 如果去重后数组小于10,则会重复生成,直到生成的去重数组大于10。
实际上只取前10组数据。
参考代码如下:设计
#生成10个以上不重复的二维数组。 如果数组长度小于10,则重新生成,直到数组长度大于10。
数量 = 0
而数字
random_number_0 = [[random.randint(0,8) for i in range(2)] for j in range(12)]
#将列表转换为元组,然后使用set复制数据
random_number = list(set([random_number_0 中的 t 的元组(t)]))
num = len(随机数)
3)点击打开区域
使用递归函数
首先获取周围方格的坐标,然后计算周围方格的地雷数量。 如果不为0,则显示对应的数字。 如果为0,则调用递归函数并继续计算。 直到没有数量为0代码的方格为止
4)同时按左右键的操作方式
点击未打开的方块无效
方块已经打开,获取方块的编号(1-8),然后检测其周围的8个方块。
如果剩余未打开的方格==当前方格数,则会自动标记为标志。
剩余未开方格 > 当前方格数,无动作
如果剩余未打开的方格中标记的旗帜数量==当前方格的数量,则其他剩余未打开的方格将自动打开。 如果有地雷,游戏就会失败。
剩余未打开的方格中标记的旗帜数量! = 当前方格的数量,无动作
5)第一步是Lei的情况
如果第一次点击的方格是地雷,则强制重新执行随机地雷分布游戏动态,并不断检查点击的方格是否还有地雷。 如果还有地雷,则重复执行,直到点击的方格内没有地雷为止。 直到打雷
文章来源:https://blog.csdn.net/weixin_39628070/article/details/112038464