python扫雷游戏设计_Python 扫雷游戏 完整源代码+图片素材
设计需求
基础功能
实现windows扫雷游戏初级的全部功能
扫雷尺寸99 方格 每一个方格尺寸3030
游戏初始化时,随机分布10个地雷
当左键点击雷区任意方格时,则游戏开始
鼠标左键点击为翻开方格,为雷则游戏失败,非雷则显示其周围一圈地雷的数量(0-8)
鼠标右键单击标记为旗帜,此时左键单击无效。
鼠标右键再次单击标记为旗帜的方格,则标记转为问号,代表疑问,此时左键单击有效。
第一步 默认不能踩雷 (若是是雷,强制从新随机分布直至为非雷)windows
点开一片区域
当左键点击方格时,若是为非雷且其周围一圈的地雷数量为0,则自动翻开其周围一圈的方格,再检测是否还存在数量为0的方格,若有则继续翻开其周围一圈方格,直至没有数量为0的方格为止。(视觉效果上至关于点开一片区域)数组
当鼠标左键和右键同时单击一块方格时:
1) 未翻开方格点击无效
2) 已翻开方格,获取方格的数字(1-8),而后检测其周围8个方格中
剩余未翻开方格 == 当前方格数字,则自动标记为旗帜
剩余未翻开方格 > 当前方格数字,无动做
剩余未翻开方格中已标记旗帜数量 == 当前方格数字,则自动翻开其它剩余未翻开方格,若是有雷则游戏失败
剩余未翻开方格中已标记旗帜数量 != 当前方格数字,无动做dom
其它功能
计时器:方格第一步左键翻开以后即开始计时,直至游戏结束(成功或失败)
雷数:每标记一个旗帜则雷数减1,雷数容许为负值
游戏状态:游戏开始为normal脸,游戏成功为smile脸,游戏失败为cry脸。任意时刻点击任意状态的脸都将重置游戏svg
游戏失败断定:左键翻开方格为雷或者左键右键同时点击自动翻开未翻开方格时有雷则断定游戏失败
游戏成功断定:正确使用旗帜标记出全部地雷,且雷数显示为0(即没有多标旗帜)函数
主要功能模块实现思路
1) 如何检测鼠标左键和右键同时按下
设置鼠标每一个键(左键,右键,滚轮)的状态位,检测其按下和松开两个状态
当鼠标左键按下且未松开时,检测到右键按下时,则认为两键同时按下
反之同理.net
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的方格为止code
4)左右键同时按下的操做orm
未翻开方格点击无效
已翻开方格,获取方格的数字(1-8),而后检测其周围8个方格中
剩余未翻开方格 == 当前方格数字,则自动标记为旗帜
剩余未翻开方格 > 当前方格数字,无动做
剩余未翻开方格中已标记旗帜数量 == 当前方格数字,则自动翻开其它剩余未翻开方格,若是有雷则游戏失败
剩余未翻开方格中已标记旗帜数量 != 当前方格数字,无动做
5)第一步就是雷的状况
若是第一次左键单击的方格就是雷,则强制从新执行随机雷分布,并不断检测点击的方格是否仍有地雷,若是仍是有雷,则反复执行,直到该点击方格无雷为止
python扫雷游戏设计_Python 扫雷游戏 完整源代码+图片素材相关推荐
- python游戏设计_python小游戏设计入门1-了解游戏
从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等游戏:发展到现在,玩游戏已经成为生活 ...
- python扫雷游戏设计_python扫雷游戏
#-*- coding: utf-8 -*-#@Time : 2020/12/18 12:57#@Author : Zhenghui Lyu#@File : Main.py#@Software: Py ...
- Python 扫雷游戏 完整源代码+图片素材
代码的下载地址 截图 设计需求 基础功能 实现windows扫雷游戏初级的所有功能 扫雷尺寸99 方格 每个方格尺寸3030 游戏初始化时,随机分布10个地雷 当左键点击雷区任意方格时,则游戏开始 鼠 ...
- 用Python爬取最新股票数据含完整源代码
用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...
- python打砖块游戏算法设计分析_python小游戏--打砖块的实现与讲解(python自学总结系列)...
我在系统地学习了python之后,觉得python带给我很多乐趣,因此在网络平台GitHub上寻找了这个小游戏,这个小游戏是一个很经典的游戏,只是打砖块,但是可以很好地入门并体现python的乐趣. ...
- Android 游戏设计教程:游戏元素和工具
转自:http://www.oschina.net/question/28_57188 作者:Richard A. Rogers (本节内容选自<Learning Android Game Pr ...
- 2d游戏设计,pygame 游戏开发
此次作业是使用pygame模块自主设计一款2D游戏. 此次制作的游戏灵感来源于jumpKing,这是一款出售于steam的高技术游戏. 我们选择了他们的操作方式: 需A.D键来控制人物的移动,以及空格 ...
- Android游戏设计教程:游戏元素和工具
(本节内容选自<Learning Android Game Programming>这本书,主要分享针对Android设备开发游戏的基本原则和方法.) 创造优秀手机游戏不仅需要编写某些相当 ...
- python插件化设计_Python打造出适合自己的定制化EclipseIDE
Eclipse是一套强大的框架,其能够通过内置插件机制实现多种扩展方式.然而要想添加一小点额外功能,大家都不可避免地需要面临新插件的编写与部署工作,这显然有点令人头痛.现在在EASE的帮助下,我们能够 ...
最新文章
- MyRocks: 为facebool 的社交图谱服务的LSM-tree存储引擎
- 【转】IOS的各种后台情况的实现
- Object Hook 简单介绍
- Java 重入锁 ReentrantLock 原理分析
- 蓝桥杯练习系统习题-算法训练5
- Leetcode 17. Letter Combinations of a Phone Number(python)
- 使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
- java 排序性能_Java8排序–性能陷阱
- php 动态 控件,PHP技术在动态网页表单控件提取中的应用研究
- python发短信脚本_python脚本发送短信
- core Animation动画
- 2020年全球亿万富豪的财富增加了1.9万亿美元
- ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则...
- 软回车和硬回车 MS高级office
- Flex ANE制作打包流程
- 同为PM,项目经理和产品经理那个才是未来的CEO?【大海午餐9】
- javascript百炼成仙 第一章 掌握JavaScript基础 1.12 JavaScript运算符
- 面试-----211小本的求职之路拿到腾讯阿里人人网易游戏offer
- 医院常见的信息化系统
- 论文翻译:2019_Speech Super Resolution Generative Adversarial Network
热门文章
- 接口与抽象类的区别,为什么要用接口,抽象类不香吗?
- 场景特征描述子(全局特征)-GIST
- //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg)
- java 微信 图灵机器人,SAE服务下用java实现微信公众账号图灵机器人
- scanf()函数的使用
- server sent event
- 从零构建知识图谱-第二章知识图谱技术体系
- 电路与模拟电子技术第一次作业及要点(一、二两章)
- 模拟退火算法及常见应用
- python调用ssh-paramikoparamiko-expect