使用RPA进行自动化扫雷

最近看到有人用RPA进行自动扫雷,想想我自己是否也能写出这个自动化,于是动手尝试。

 

以下分享我搭建自动扫雷的过程

一、定义判断雷的方法

1、我确定 雷/非雷 的3个方法(还有其它方法可以判断雷)

判断雷一般都是以中心点数字展开九宫格,判断外围8个宫格是雷的可能性,如果是雷则右键标记,如果非雷则左键点开。
①假设中心点数值=x,如果明格(指数字+空的集合)=8-x。则九宫格内全部未知单元格都是雷,右键标记

②12组合可以判断一个雷。如以下通过黄色框框可以判断红框为雷

③边缘11组合可以判断一个非雷。如以下通过黄色框框可以判断白框为非雷

2、基本上面3个方法能循环到最后,不过也有几率会出现人工也无法判断雷的情况。出现这个情况则靠运气随机点一个

 

上面解决了判断雷,没想到如何快速循环雷区才是难点

二、循环雷区

  1. 一开始循环整个雷区单元格,发现这个方法非常浪费时间在多余的未知/已知单元格上
  2. 然后我又想通过中心点获取九宫格坐标和判断雷,再以已知的外围8个宫格坐标依次再次获取获取九宫格坐标和判断雷,如此循环下去。最后发现该方法会往一个方向进行大部分无效果的循环,所以也否决了
  3. 第三次,我想着通过明格区域(指数字+空的集合)的最外一层数字单元格去循环。这个检索单元格数会少很多,但是缺点是会遗漏非外层能判断雷的单元格,导致一部分很明显的雷没有循环到
  4. 第四次,在第三次的基础上优化,改为循环明格区域(指数字+空的集合)的最外两层数字单元格,发现相比上一种方法不会遗漏单元格,但是又多出了一小部分非必要循环的单元格
  5. 第五次,通过未知单元格去推算上下左右、斜角的单元格,如果是数字单元格则进行判断九宫格(这种方法相比上述几种方法速度更快)

 

三、运行 

上面搭建完程序,运行。速度算不上快不过还蛮顺利

 

posted @ 2024-07-13 11:29  dabeen  阅读(23)  评论(0编辑  收藏  举报