代码的下载地址
截图



  1. 设计需求

基础功能
实现windows扫雷游戏初级的所有功能
扫雷尺寸99 方格 每个方格尺寸3030
游戏初始化时,随机分布10个地雷
当左键点击雷区任意方格时,则游戏开始
鼠标左键点击为翻开方格,为雷则游戏失败,非雷则显示其周围一圈地雷的数量(0-8)
鼠标右键单击标记为旗帜,此时左键单击无效。
鼠标右键再次单击标记为旗帜的方格,则标记转为问号,表明疑问,此时左键单击有效。
第一步 默认不能踩雷 (如果是雷,强制重新随机分布直至为非雷)

点开一片区域
当左键点击方格时,如果为非雷且其周围一圈的地雷数量为0,则自动翻开其周围一圈的方格,再检测是否还存在数量为0的方格,如有则继续翻开其周围一圈方格,直至没有数量为0的方格为止。(视觉效果上相当于点开一片区域)

当鼠标左键和右键同时单击一块方格时:
1) 未翻开方格点击无效
2) 已翻开方格,获取方格的数字(1-8),然后检测其周围8个方格中
剩余未翻开方格 == 当前方格数字,则自动标记为旗帜
剩余未翻开方格 > 当前方格数字,无动作
剩余未翻开方格中已标记旗帜数量 == 当前方格数字,则自动翻开其它剩余未翻开方格,如果有雷则游戏失败
剩余未翻开方格中已标记旗帜数量 != 当前方格数字,无动作

其它功能
计时器:方格第一步左键翻开之后即开始计时,直至游戏结束(成功或失败)
雷数:每标记一个旗帜则雷数减1,雷数允许为负值
游戏状态:游戏开始为normal脸,游戏成功为smile脸,游戏失败为cry脸。任意时刻点击任意状态的脸都将重置游戏

游戏失败判定:左键翻开方格为雷或者左键右键同时点击自动翻开未翻开方格时有雷则判定游戏失败
游戏成功判定:正确使用旗帜标记出所有地雷,且雷数显示为0(即没有多标旗帜)

  1. 主要功能模块实现思路

1) 如何检测鼠标左键和右键同时按下
设置鼠标每个键(左键,右键,滚轮)的状态位,检测其按下和松开两个状态
当鼠标左键按下且未松开时,检测到右键按下时,则认为两键同时按下
反之同理

2)随机雷分布
通过列表生成式生成二维数组,表示地雷分布的row和line值。
随机生成的二维数组可能存在重复值,所以需要先将列表转换为tuple,再通过set去重
去重后数组可能小于10,所以为简化操作,一开始生成12组数值,如果去重后小于10则重复生成直到生成的去重数组大于10为止。
实际只取前10组数据。
参考代码如下:

#生成大于10个不重复的二维数组,如果数组长度小于10则再次生成直到数组长度大于10为止
num = 0
while num <10:random_number_0 = [[random.randint(0,8) for i in range(2)] for j in range(12)]#将列表转换为tuple,再通过set去重复数据random_number = list(set([tuple(t) for t in random_number_0]))num = len(random_number)

3)点开一片区域
利用 递归函数
先获取周围方格的坐标,然后计算周围方格的地雷数量,不为0则显示相应的数字,为0的话,则调用递归函数,继续计算。直至没有数量为0的方格为止

4)左右键同时按下的操作

未翻开方格点击无效
已翻开方格,获取方格的数字(1-8),然后检测其周围8个方格中

  • 剩余未翻开方格 == 当前方格数字,则自动标记为旗帜

  • 剩余未翻开方格 > 当前方格数字,无动作

  • 剩余未翻开方格中已标记旗帜数量 == 当前方格数字,则自动翻开其它剩余未翻开方格,如果有雷则游戏失败

  • 剩余未翻开方格中已标记旗帜数量 != 当前方格数字,无动作

5)第一步就是雷的情况
如果第一次左键单击的方格就是雷,则强制重新执行随机雷分布,并不断检测点击的方格是否仍有地雷,如果还是有雷,则反复执行,直到该点击方格无雷为止

代码的下载地址

Python 扫雷游戏 完整源代码+图片素材相关推荐

  1. python扫雷游戏设计_Python 扫雷游戏 完整源代码+图片素材

    设计需求 基础功能 实现windows扫雷游戏初级的全部功能 扫雷尺寸99 方格 每一个方格尺寸3030 游戏初始化时,随机分布10个地雷 当左键点击雷区任意方格时,则游戏开始 鼠标左键点击为翻开方格 ...

  2. Python扫雷游戏源代码及图片素材

    Python扫雷游戏源代码.源程序共有两个文件及一个资源包:main.py及mineblock.py,资源包请前往百度网盘下载, https://pan.baidu.com/s/1u-qsJhAaCJ ...

  3. python爬取网站源代码+图片

    python爬取网站源代码+图片 需求分析 基础知识 正则表达式 python网络请求 文件读写 实现 基本思路 具体实现 结果 总结 需求分析 大部分有志青年都想建立属于自己的个人网站,从零开始设计 ...

  4. VC系统扫雷游戏外挂源代码程序下载(转帖

    VC系统扫雷游戏外挂源代码程序下载(转帖) 2008-03-04 10:25 经过了多次测试写出了历史上第一个有点意义的MFC程序.效果差强人意.^_^ CODE: // CrackWinmineDl ...

  5. python扫雷游戏课程设计小组任务计划与分配表_Python开源扫雷游戏由网瘾少年制作,转手后月入18K,附赠所有源文件...

    原标题:Python开源扫雷游戏由网瘾少年制作,转手后月入18K,附赠所有源文件 最近入手一款Python扫雷游戏,迫不及待的打开源文件试玩几次之后,颇感惭愧-惭愧这么经典的游戏居然不是由我这种&qu ...

  6. 不用找,你想要的游戏3d纹理图片素材都在这里

    前方注意咯!建议先收藏再看哦!为大家整理游戏3d纹理图片素材,总有满足你需求的一款,除此之外,免费,资源质量好,一键打包下载,你还不心动吗? 在找寻资源的时候,无意中发现了这个网站,资源多,质量好,让 ...

  7. python 扫雷游戏

    python 扫雷游戏 前言 开始 献上代码 代码剖析 项目github 作者 前言 又不知道该干啥了...... 开始 献上代码 from tkinter.messagebox import sho ...

  8. Python扫雷游戏代码

    这是一个 Python 扫雷游戏的示例代码: ``` 导入需要的库 import random import tkinter as tk 定义常量 SIZE = 400 GRID_LEN = 4 GR ...

  9. cocos2d-x《农场模拟经营养成》游戏完整源代码

    cocos2d-x农场模拟经营养成游戏完整源代码,cocos2d-x引擎开发,使用JSON交互,支持IOS与 Android,解压后1016MB. 非常强大的游戏源代码         完整游戏源代码 ...

最新文章

  1. 37.操作系统的信号量
  2. 学习笔记——深拷贝与浅拷贝
  3. 两个数之间的最短路径问题
  4. 怎样在 Centos 6.8 中安装 Elasticsearch 5.2
  5. R7-1 正整数A+B (15 分)
  6. Reactive Extensions入门(4):Rx实战
  7. 从啥也不会的小白,如何成为合格的算法工程师?
  8. antd vue 的table添加背景颜色_「教程」Spire.PDF教程:如何给PDF添加背景颜色和平铺背景图...
  9. nginx出现499现象及原因
  10. 夜光:Java语言基础学习笔记(三)在校资源
  11. java捕鱼达人程序设计_捕鱼达人(Java版)
  12. Linux,Xshell
  13. [PS视频][ps从入门到精通82课][mp4/327M]
  14. 代码实现微信8.0特效
  15. Python爬虫获取代理ip及端口
  16. 设计全局ER模型 数据库系统原理(2007版) 课程代码4735 笔记
  17. 1218学习笔记——kvm上vm+vtpm(IMA)
  18. 计算机与现代化在线投稿,计算机与现代化审稿周期
  19. 百度地图采集员的日常被揭开:人与AI同频的样貌清晰可见
  20. 学习、恋爱、交朋友 大数据告诉你大学真相

热门文章

  1. Chrome 开发者工具官方中文文档
  2. Python爬虫——selenium模拟京东网站登录(一)
  3. 让游戏在英国取得成功的 5 个技巧
  4. 转:Yahoo!网站性能最佳体验的34条黄金守则——图片、Coockie与移动应用
  5. c语言字符数组自动填充,数组在C中自动填充
  6. Tcl/Tk--文件操作
  7. 如何创建一个“个人微信公众号”
  8. PC端 UC浏览器页面显示该站点安全证书的吊销不可用
  9. EMAC和GMAC区别
  10. Ubuntu Kylin如何关闭自动锁屏