自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。
一、准备工作
1.扫雷游戏
我是win10,没有默认的扫雷,所以去扫雷网下载
http://www.saolei.net/BBS/
![](https://img.haomeiwen.com/i15387567/78e2235b05ccc9ca.png)
推荐下我自己创建的Python学习交流群 943752371 ,这是Python学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。
2.python 3
我的版本是 python 3.6.1
3.python的第三方库
win32api,win32gui,win32con,Pillow,numpy,opencv
可通过 pip install --upgrade SomePackage 来进行安装
注意:有的版本是下载pywin32,但是有的要把pywin32升级到最高并自动下载了pypiwin32,具体情况每个python版本可能都略有不同
我给出我的第三方库和版本仅供参考
![](https://img.haomeiwen.com/i15387567/0e0b51b291884794.png)
二、关键代码组成
1.找到游戏窗口与坐标
![](https://img.haomeiwen.com/i15387567/714586ba32339bfe.png)
2.锁定并抓取雷区图像
![](https://img.haomeiwen.com/i15387567/7302e761c083632d.png)
3.各图像的RGBA值
![](https://img.haomeiwen.com/i15387567/455be8d9979fc631.png)
4.扫描雷区图像保存至一个二维数组map
![](https://img.haomeiwen.com/i15387567/1f14b891cf145a1a.png)
5.扫雷算法
这里我采用的最基础的算法
1.首先点出一个点
2.扫描所有数字,如果周围空白+插旗==数字,则空白均有雷,右键点击空白插旗
3.扫描所有数字,如果周围插旗==数字,则空白均没有雷,左键点击空白
4.循环2、3,如果没有符合条件的,则随机点击一个白块
插旗
![](https://img.haomeiwen.com/i15387567/5b59e2578481221f.png)
点击白块
![](https://img.haomeiwen.com/i15387567/d0d43ad04bc7eca3.png)
随机点击
![](https://img.haomeiwen.com/i15387567/77d61012176c6b49.png)
网友评论