使用 python 的单人AI 扫雷游戏

Pygame小游戏:玩扫雷就在瞎点的,不止你一个人。 前言 《扫雷》是一款大众类的益智小游戏,于1992年发行。 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个 雷即全盘皆输。 它是许多人接触到的第一款游戏,大概也是广大办公族和无网学生无聊时消遣的最佳游戏,是不是 每次见到戴上墨镜的小人很有成就感?在那些还没有网(被切断网)的岁月,扫雷曾陪伴无数人度 过了他们的童年。你的最佳纪录是多少?小编在工作间隙随手刷了一局30秒(囧????)。 那么?怎么才能通关呢?这,有生之年靠自己猜可能做不到了,BUT我 阅读详情

扫雷是一款单人益智游戏,相信大部分人都在以前上微机课的时候玩过。游戏的目标是借助每个区域中相邻地雷数量的线索,清除包含隐藏的“地雷”或炸弹的单元格,但不引爆其中任何一个,全部清除后即可获胜。今天我们用 Python 完成这个小程序,并且用AI来学习并实现它。

前期准备:
1.确保安装了Python 3.6+。
2.安装Pygame。
3.复制下面代码。
**请添加图片描述
**请添加图片描述

设置游戏元素

# 颜色

BLACK = (0, 0, 0)
GRAY = (180, 180, 180)
WHITE = (255, 255, 255)

# 创建游戏

pygame.init()
size = width, height = 600, 400
screen = pygame.display.set_mode(size)

# 字体


OPEN_SANS = r"C:\Users\XYSM\PycharmProjects\pythonProject7\Font.ttf"
smallFont = pygame.font.Font(OPEN_SANS, 20)
mediumFont = pygame.font.Font(OPEN_SANS, 28)
largeFont = pygame.font.Font(OPEN_SANS, 40)

# 计算面板尺寸

BOARD_PADDING = 20
board_width = ((2 / 3) * width) - (BOARD_PADDING * 2)
board_height = height - (BOARD_PADDING * 2)
cell_size = int(min(board_width / WIDTH, board_height / HEIGHT))
board_origin = (BOARD_PADDING, BOARD_PADDING)

# 添加图片

flag = pygame.image.load(r"C:\Users\XYSM\PycharmProjects\pythonProject7\flag.png")
flag = pygame.transform.scale(flag, (cell_size, cell_size))
mine = pygame.image.load(r"C:\Users\XYSM\PycharmProjects\pythonProject7\mine.png")
mine = pygame.transform.scale(mine, (cell_size, cell_size))

字体

字体可以在自己电脑中

C:\Windows\Fonts

的位置选择自己喜欢的复制到项目中 assets/fonts目录下即可
我这里用的字体展示在下图:
请添加图片描述
添加图片
这里我们只用了两张图,一个是地雷,一个是用来标记地雷的旗帜

创建游戏和 AI 代理

# 创建游戏和 AI 代理

game = Minesweeper(height=HEIGHT, width=WIDTH, mines=MINES)
ai = MinesweeperAI(height=HEIGHT, width=WIDTH)

# 跟踪显示的单元格、标记的单元格以及是否被地雷击中

revealed = set()
flags = set()
lost = False

#设置 AI 移动按钮

 # AI 移动按钮

    aiButton = pygame.Rect(
        (2 / 3) * width + BOARD_PADDING, (1 / 3) * height - 50,
        (width / 3) - BOARD_PADDING * 2, 50
    )
    buttonText = mediumFont.render("AI Moving", True, BLACK)
    buttonRect = buttonText.get_rect()
    buttonRect.center = aiButton.center
    pygame.draw.rect(screen, WHITE, aiButton)
    screen.blit
Java 实现扫雷与高胜率低耗时自动扫雷 AI (下) 上一篇博客介绍了本项目总体情况, 这一篇来介绍一下我实现的自动扫雷 AI 算法. 本 AI 胜率比网上最高胜率的 AI 差 0.5% 左右. 不过本 AI 也不是没有优势, 它运算速度很快 (强行有优势 (ˉ▽ ̄~)), 平均 42 毫秒可以扫完一局 Win XP 规则下的专家难度. 这篇博客会介绍一下我的思路和踩过的坑, 也会列出一些关于胜率的数据. 希望能够帮助其他萌新入个门. 项目已经开源, 代码也写了注释, 链接放在文章最后. 先再次把最终成品的 AI 胜率等指标罗列一下: 指标 Win . 阅读详情

相关推荐

从零开始:如何用Python建立你的第一个人工智能模型

在这篇文章中,我们将介绍如何从零开始使用Python建立你的第一个人工智能模型。无论你是刚接触编程的新手,还是有经验的开发者想进一步探索人工智能领域,这篇文章都将为你提供清晰、详细的指南。我们将一步步探索数据预处理、模型建立、训练和测试的过程,以及如何解读模型的结果。

Allen1862105的博客 4万+

教你利用python 的单人AI 扫雷游戏

AI玩扫雷 很高兴又见面了!???? 扫雷是一款单人益智游戏,相信大部分人都在以前上微机课的时候玩过。游戏的目标是借助每个区域中相邻地雷数量的线索,清除包含隐藏的“地雷”或炸弹的单元格,但不引爆其中任何一个,全部清除后即可获胜。今天我们用 Python 完成这个小程序,并且用AI来学习并实现它。 看看我们将要实现的最终样子。???? 运行扫雷 1.确保安装了Python 3.6+。 2.安装Pygame。 3.克隆这个存储库: 设置 minesweeper.py ⚓ 扫雷游戏表示

weixin_54556126的博客 1373

Python游戏化学习:通过CodeCombat等平台快速掌握编程思维

编程学习常因反馈延迟而显得枯燥,游戏化学习通过即时反馈机制改变了这一现状。其核心原理是将编程逻辑与游戏行为直接关联,使抽象的循环、条件判断等概念转化为可视化的动作结果。这种学习方式的技术价值在于构建了低门槛、高反馈的实践沙盒,有效降低认知负荷,让学习者能聚焦于核心逻辑理解。在应用场景上,它特别适合Python初学者建立编程直觉,通过控制游戏角色、解决关卡谜题等任务驱动学习。例如,在CodeCombat等平台中,学习者能直观看到代码如何影响游戏世界,这种强关联性训练正是掌握编程思维的关键。

weixin_33743703的博客 464

《PyQt 例子程序全攻略》:此文为AI自动生成

PyQt 是一个用于创建图形用户界面的 Python 库,它将强大的 Qt 库与 Python 语言完美结合,具有丰富的功能和跨平台性。丰富的功能:提供了大量的 UI组件,如按钮、标签、文本框、下拉菜单等,能够满足各种复杂的用户界面设计需求。同时,支持布局管理,使界面布局更加合理美观。跨平台性:无论是在 Windows、Mac 还是 Linux 等操作系统上,PyQt都能展现出卓越的性能和稳定性,开发者只需编写一次代码,即可在多个平台上运行。

zheng_ruiguo的专栏 1215

20234206 郑皓文《Python程序设计》实验四 实验报告

因此,在编写的过程中,我查找课本《零基础学Python》中的知识,与其他基础更好的同学们交流学习并且多次利用Pycharm自带的系统检查功能查找错误,最后再使用AI系统对代码进行检查。第四,在揭示方块的时候,我选择使用reveal_square和all_non_mines_revealed函数,首先检查揭示位置是否有效(边界和是否已经揭示),并检查是否有地雷,如果有则提示游戏结束。首先,Python的使用范围十分广泛,无论是程序设计还是爬虫,在充分利用的情况下都可以对我们的工作生活有很大的作用。

zhw20041010的博客 920

自动扫雷游戏的Python实现

接下来,我们需要实现一个函数来揭示游戏板上的方块。当揭示一个方块时,我们需要检查该方块的状态,并根据不同的状态采取相应的操作。自动扫雷游戏是一个经典的单人益智游戏,目标是通过点击方块来揭示地雷的位置,同时避免踩中地雷。在每一轮循环中,我们首先显示游戏板,然后等待玩家输入要揭示的方块的位置。通过编写这个简单的命令行版本的自动扫雷游戏,你可以进一步扩展和优化它,加入更多的功能和界面,使游戏更加有趣和具有挑战性。在上面的代码中,我们首先询问玩家游戏板的大小和地雷的数量,然后根据玩家的输入初始化游戏板,并调用。

与其临渊羡鱼,不如退而结网 272

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6551

Vue 实现华视身份证读卡器功能

在www.downcc.com下载“华视cvr100驱动”安装程序; 华视电子官网有相应的文档说明和程序下载 一、服务安装 选择安装目录: 启动读卡服务: 安装成功会有如图所示: 注意事项: 安装开发包必须使用管理员权限,因为windows服务和读卡器设备驱动程序均需要管理员权限,否则会安装失败。 win10需要修改组策略才有管理员权限。 二、服务的使用 打开浏览器,输入地址http://127.0.0.1:19196/mainpage,回车 点击openDevice: 点.

zyqgt960812的博客 6503

STM32F103上跑mbedtls 2.24.0:手把手教你为MQTTS加密通信打好基础

本文详细介绍了如何在STM32F103上移植和裁剪mbedtls 2.24.0,为MQTTS加密通信打下坚实基础。通过版本选择、开发环境配置、深度裁剪策略和加密功能验证,帮助开发者在资源受限的MCU上实现安全通信。文章还提供了常见问题解决方案和性能优化技巧,助力物联网设备开发。

weixin_30321709的博客 462

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

SenseVoice 实测,阿里开源语音大模型,识别效果和效率优于 Whisper,居然还能检测掌声、笑声!5分钟带你部署体验

阿里开源语音大模型:语音识别效果和性能强于 Whisper,还能检测掌声、笑声、咳嗽等

u010522887的专栏 4万+

第3章: MMU Interval Notifier 区间通知器的核心原理⭐

摘要:区间级内存通知机制分析 本文分析了Linux内核中区间级内存通知机制(mmu_interval_notifier)的设计原理与实现。该机制针对传统全局通知(mmu_notifier)存在的性能开销大、无法精确控制等问题,通过引入区间树(Interval Tree)实现精确匹配,仅当内存变化与注册区间重叠时才触发回调。核心优势包括:1)O(log n + k)的高效查找性能;2)支持独立管理各内存区间;3)实现高并发处理不同区间的失效事件。

图形/计算GPU的驱动与虚拟化技术分享园地 2026

Apache DolphinScheduler 实现了对 OceanBase 的元数据库支持

Apache DolphinScheduler 是一款开源的分布式工作流任务调度系统,它提供了可视化的工作流设计和调度功能,支持大数据任务的自动化调度和监控。最近的更新中,Apache DolphinScheduler 引入了对 OceanBase 数据库的元数据库支持,这为用户在大数据环境中管理和调度任务提供了更多选择。用户可以通过 DolphinScheduler 提供的可视化界面进行工作流的设计和调度,也可以通过 DolphinScheduler 提供的 API 进行任务的编程调度。

VavzNvml的博客 495

华为OD机试真题 2026-9-2【查找幸运数】

华为OD机试真题 新系统【查找幸运数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【查找幸运数】多语言题解。

qq_45776114的博客 500

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 用python写一个简单的贪吃蛇游戏(附代码)
下一篇: Python装逼指南——五行代码实现批量抠图
python2021_
博客等级 码龄6年 1730粉丝 157原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值