Python生成扫雷地图(并非游戏实现)

扫雷--雷区生成随机化总结 总括 扫雷游戏,需要随机生成雷,并且最好能让生成的雷随机分布,下面将对使雷随机分布算法进行评估 #方法一 即设MineNumber是雷的数量,对每个雷随机生成其该有的位置 此方法是for循环里面套了一个while循环,如果while循环一直不退出的话算法的时间复杂度将会是非常高的 #方法二 先将雷按照有序的方法排序,再将其打乱 打乱的策略可以是这样的:即对于整个棋盘每个位置,再随机生成一个位置并将这两个位置交换 验证其是否够乱 判断是否够乱的标准:模拟N次,判断N次后,每个位置上出现雷的概率是否相等, 阅读详情

需求说明

输入:行数m、列数n、地雷数k
输出:随机扫雷地图

第一步,生成地图和随机地雷
第二步,没有地雷的格子填充数字,该数字表示周边地雷总数

思路

代码实现

下面2种实现,分别是不用numpy和用numpy,思路是一样的

from random import shuffle

# 行数、列数、地雷数
m, n, k = 5, 10, 15

# 地雷符号,此处用9表示
landmine = 9

# 初始化序列,总长为m*n,k前是雷,k后是0
ls = [landmine for _ in range(k)] + [0 for _ in range(m * n - k)]

# 打乱序列顺序,达到随机的效果
shuffle(ls)

# m*n的序列=>m行n列的矩阵
matrix = [[ls[i + j * n] for i in range(n)] for j in range(m)]

# 对没有雷的格子填充数字,该数字表示周围地雷总数,注意边缘格子,不要越界
for i in range(m):
    for j in range(n):
        if matrix[i][j] == 0:
            matrix[i][j] = sum(
                1 for a in range(max(i - 1, 0), min(i + 2, m))
                for b in range(max(j - 1, 0), min(j + 2, n))
                if matrix[a][b] == landmine)

# 最终结果展示
[print(v) for v in matrix]
import numpy as np

# 行数、列数、地雷数
m, n, k = 5, 10, 15

# 地雷符号,此处用9表示
landmine = 9

# 初始化总长为m*n的序列,TopK是雷,k后是0
ls = [landmine for _ in range(k)] + [0 for _ in range(m * n - k)]
print(ls)

# 打乱序列顺序,达到随机的效果
np.random.shuffle(ls)
print(ls)

# m*n的序列=>m行n列的矩阵
matrix = np.reshape(ls, (m, n))
print(matrix)

# 对没有雷的格子填充数字,该数字表示周围地雷总数,注意边缘格子,不要越界
for i in range(m):
    for j in range(n):
        if matrix[i][j] == 0:
            matrix[i][j] = sum(
                1 for a in range(max(i - 1, 0), min(i + 2, m))
                for b in range(max(j - 1, 0), min(j + 2, n))
                if matrix[a][b] == landmine)

# 最终结果展示
print(matrix)
Python游戏开发,pygame模块,Python实现扫雷小游戏 前言 今天给大家分享是扫雷小游戏,废话不多说,让我们愉快地开始吧~ 效果展示 开发工具 Python版本: 3.6.4 相关模块: pygame模块; 以及一些python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 原理简介 这这里我简单介绍一下游戏的实现思路。 相信大家对扫雷这款windows自带的经典小游戏都不陌生,它的游戏规则很简单: 游戏界面左上角的数字代表所有方格中埋有雷的数目,右上角是一个计时器。你要做的就是根据提示 阅读详情

相关推荐

用pygame编写扫雷(python)

这是我的第一篇文章,简单做个扫雷适应一下QWQ

weixin_49409529的博客 6820

关于扫雷的实现

扫雷的实现

llllll152的博客 395

python 扫雷游戏

python 扫雷游戏

weixin_42954615的博客 1197

扫雷程序-地雷位置生成

//过会儿再编辑得简洁点。 #include #include #include #define nMine 10 // Number of mines #define nRow 10 #define nCol 8 // "Mines" or "Not Mines" are marked by numbe

代码如诗 2917

我想自己写一个扫雷,用Python

我是小鱼,今天是2021年11月17日,我想自己写一个扫雷,用Python

yuxingdeyun的博客 2263

《扫雷》游戏获胜算法分析

扫雷游戏中是否能够获胜,其实获胜的算法很容易计算。计算思路如下。 获胜的条件其实就是将所有的雷排除干净,并且将非雷的区域全部点击完毕。 判断方格属性,如果方格的属性全部是雷,那么就可以认为获胜的话,这样会有漏洞,用户可以通过尝试的方法,在雷区不断的标注小旗,这样就可以获胜了。 错误算法 如下,统计用户确定(isOk)的方格为雷的数量。 bool QGameWidget::isWin() { int sum = 0; for (int i = 0; i < m_cells

啊渊的专栏 5423

【C语言】简单扫雷游戏

扫雷规则应该就是以下几条每个格子有两种状态,有地雷或者没有地雷玩家点到地雷游戏结束玩家标记出所有地雷游戏胜利每个没有地雷的格子点开后显示相邻8个格子里面存在地雷的数目,周边没有地雷显示空白。

weixin_63321424的博客 1244

带你用Python制作一个经典小游戏:扫雷

超级经典!超级好玩!

阿玥的小博客 3773

python版扫雷(基于tkinter),教你学python

python版本扫雷游戏,具有标准模板tkinter,学习python啦!!!

boonion的博客 7517

python小游戏 扫雷

同时,我还学到了如何使用Python中的GUI库来设计游戏界面,如何使用随机数来生成地图,如何使用计时器和计分器来记录游戏时间和得分,以及如何使用条件语句来判断游戏是否结束。本实验的设计和实现,不仅提高了我的Python编程能力和实践能力,还让我更深入地了解了计算机科学中的经典问题。通过本实验,我还发现了一些需要改进的地方,如游戏界面的美化、游戏规则的完善、游戏难度的设置等。遍历地图,对于每个非地雷方格,统计其周围8个方格中地雷的数量,并在该方格上标记该数量。如果点击的是已揭露的方格,则无需处理。

m0_64021225的博客 2027

利用kettle进行数据库数据比对

Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。本人用的版本是6.1。 之前用kettle这个开源的ETL工具是用来做数据抽取的,这次测试有个需求,是做数据库数据的比对。验证源表到目标表的逻辑正确,从而利用源表自己写SQL逻辑,生成的结果和目标表去比对。这次想到了利用kettle的数据比较功能,来做这些数据校验。 ...

多米诺DU的专栏 1万+

python实现《扫雷》小游戏

主程序不到60行就完成了《扫雷》经典小游戏,你确定不来看看嘛

qq_65120254的博客 1万+

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

小橙子的博客 3354

游戏编程学Python(8)— 扫雷(文字版)

前一段时间扫雷游戏挺火的,可惜问哥没有赶上热度。使用图形化开发不难,但是要想解释清楚还是要花不少时间。问哥还是想循序渐进地从零基础开始和大家一点点进步,这也是问哥写下这个系列的初衷。但是即使在控制台界面,我们依然可以用文本搭建一个扫雷的小游戏。下面跟着我来一起试试看吧。扫雷的规则大家应该都知道吧。在我们这个文字版的扫雷小游戏中,稍微有一些操作的不同。比如无法用...

问哥还能打 6139

从MATLAB到版图:手把手复现一篇16位1MSPS SAR ADC的完整设计流程(含Cadence与Verilog代码)

本文详细介绍了16位1MSPS SAR ADC的完整设计流程,从MATLAB行为级建模到Cadence电路实现,再到Verilog数字逻辑编码和版图生成。重点讲解了高精度逐次逼近型模数转换器的关键技术,包括电容阵列建模、校准算法实现、FFT性能验证以及混合信号仿真等,为工程师提供了实用的工业级设计指南。

weixin_28703507的博客 307

Robosuite实战:通过Xbox手柄实现机械臂6-DoF精准控制的完整指南

本文详细介绍了如何通过Xbox手柄实现机械臂的6-DoF精准控制,结合Robosuite仿真环境与MuJoCo物理引擎,提供从环境配置到代码实现的完整指南。文章重点解析了手柄映射原理、核心控制代码以及数据采集优化技巧,帮助开发者高效完成机械臂控制任务。

weixin_29169505的博客 419

Python实现扫雷游戏

Python 实现扫雷游戏

weixin_50064049的博客 1332

[Unity_Plastic SCM小技巧] 使用 UnityYAMLMerge 工具合并场景和预制件文件

首先YAMLMerge工具其实并不局限于PlasticSCM,git也可以,它是内置在Editor内的一个更加智能的版本控制工具,只不过正常不会启用,他的目录在C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe(Unity Editor安装目录),MAC上:/Applications/Unity/Unity.app/Content...

unityofficial的博客 1146

Python扫雷游戏代码

这是一个 Python 扫雷游戏的示例代码: ``` 导入需要的库 import random import tkinter as tk 定义常量 SIZE = 400 GRID_LEN = 4 GRID_PADDING = 10 创建游戏界面 root = tk.Tk() root.title('扫雷游戏') 创建画布 canvas = tk.Canvas(root, width=SIZE, h...

weixin_35755434的博客 1153

私有云平台搭建——OpenStack

私有云平台搭建——OpenStack 搭建过程

2301_79739036的博客 3092

飞牛fnNAS个人小账本导入微信账单

本文介绍了将微信支付账单导入ezBookkeeping个人记账系统的详细方法。首先通过微信申请导出账单文件,接收后需进行Excel预处理:删除前导行、添加账户和分类列、整理金额格式等。在ezBookkeeping中需预先设置"微信"分类和账户。导入时需注意列映射关系,包括交易时间、账户名称等关键字段的对应设置。文章还提到处理交易标签、格式转换等细节问题,并建议避免使用"修改余额"功能。该方法同样适用于支付宝账单导入,解决了直接导入可能出现的格式不兼容问题。

dgnankai的专栏 483

python项目分享 扫雷小游戏设计与实现 (源码)

🔥 Hi,各位同学好呀,这里是L学长!🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品python小游戏毕设 扫雷小游戏设计与实现 (源码)🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:3分创新点:4分《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。今天我们利用Python实现经典扫雷游戏简介。

mabile123444的博客 1290

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 210

Python-扫雷游戏【附完整源码】

《扫雷》是一款大众类的益智小游戏,游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。这个游戏的玩法很简单,雷区中随机布置一定数量的地雷,玩家需要尽快找出所有不是地雷的方块;如果玩家翻开的方块有地雷,则游戏结束

qiao_yue的博客 6797

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python写扫雷小游戏(pygame)

学了python后,在9月初开始比赛,比赛类容是在一个星期内(白天有课,其实只有星期一到星期五晚上和双休有时间写代码)完成指定的一个程序,程序可以选择,我选的是扫雷,因为之前有过做五子棋的基础,完成扫雷也不算难。 代码跟有缘人分享一下,资源可以加我qq(2395425694)找我要(记得评论点赞)。 虽然可能没人看,但还是打一个小广告:帮忙完成大一、大二的程序作业(c\c++\p...

qq_42847252的博客 3万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

用python写扫雷_用python写扫雷游戏实例代码分享

用python写扫雷游戏实例代码分享来源:中文源码网浏览: 次日期:2018年9月2日【下载文档:用python写扫雷游戏实例代码分享.txt】(友情提示:右键点上行txt文档名->目标另存为)用python写扫雷游戏实例代码分享 扫雷是一个非常经典的WIN游戏,我们教给大家用python语言来写出这个游戏,以下是全部实例代码:#!/usr/bin...

weixin_28877505的博客 1061

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: Emoji表情分类整理,写blog速查用
下一篇: HIVE分区,附图说明
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值