今天玩游戏的时候碰到个四宫格的小游戏,想试试能不能通过自动化的方式自动完成。
游戏本身逻辑很简单,就是四个小块拼成一个完整图案,但让它自动点击完成的话,这个思考的过程比较有意思。


游戏图: 初始四个无顺的块。

解决思路:

  1. 玩到所有的图,保存下来,后面自动识别 – 基本上不现实,鬼知道有多少图 = =
  2. 手动多玩几次,找到规律。

通过多次拼图,可以发现,每个拼完后正确的图,最终结果都会存在于四宫格的正中间,也就是说,正确的图案会有如下规律:

  • 左上角小块: 左上角,右上角,左下角, 这三个地方肯定是天蓝色背景。
  • 右上角小块: 左上角,右上角,右下角, 这三个地方肯定是天蓝色背景。
  • 左下角小块: 左上角,左下角,右下角, 这三个地方肯定是天蓝色背景。
  • 右上角小块: 右上角,左上角,右下角, 这三个地方肯定是天蓝色背景。

具体到实现上说,因为每个小格子的变动都会影响到其他小格子,因此只需要对左上角,右上角这两个小块做分析找到正确位置,对下面两个小块的分析没有意义,因为它们的位置会一直变动。如果左上角和右上角的小块放到正确位置后仍然在拼图界面,则循环回来再次处理即可。

代码


def sigongge():# 拼图时,点击的四个点   x1 = 340y1 = 1149x2 = 754y2 = 1100x3 = 324y3 = 1543x4 = 762y4 = 1541# 是否需要拼图的标志,默认需要拼图flag = 1 while flag > 0 :# 左上角小块的三个点xA1 = 120 yA1 = 865xB1=  530 yB1= 865xC1 = 120   yC1 = 1280# 右上角小块的三个点xA2 = 547yA2 = 865xB2 = 955 yB2 = 865xC2 = 547yC2 = 1280# 天蓝色背景图,用来做对比pic_test = './main_pic/pintu_beijing.jpg'# 6个点截图quyu_jietu(xA1,yA1,xA1+5,yA1+5,'a1')quyu_jietu(xB1,yB1,xB1+5,yB1+5,'b1')quyu_jietu(xC1,yC1-5,xC1+5,yC1,'c1')quyu_jietu(xA2,yA2,xA2+5,yA2+5,'a2')quyu_jietu(xB2,yB2,xB2+5,yB2+5,'b2')quyu_jietu(xC2,yC2-5,xC2+5,yC2,'c2')# 6个点截图和天蓝色背景图做对比a1 = matchImg(pic_test,'a1.jpg',0.92)b1 = matchImg(pic_test,'b1.jpg',0.92)c1 = matchImg(pic_test,'c1.jpg',0.92)a2 = matchImg(pic_test,'a2.jpg',0.92)b2 = matchImg(pic_test,'b2.jpg',0.92)c2 = matchImg(pic_test,'c2.jpg',0.92)# 设置两个标志位,确认1和2默认初始值是否正确,如果正确,则代码会把这两个标志位设为0,最后3和4交换位置.one_flag = 1two_flag=1one_is_two = 0# 注释里的一号位,代表正确拼图图案的左上角# 注释里的二号位,代表正确拼图图案的右上角# 注释里的三号位,代表正确拼图图案的左下角# 注释里的四号位,代表正确拼图图案的右下角if a1[0]> 0:if b1[0]>0:if c1[0]>0:# 初始的左上角小块,三个点都是天蓝色背景,说明左上角小块就是正确图案,不用做处理print("1是一号位,不处理")one_flag = 0passelse:# 左上角是天蓝色,右上角是天蓝色,左下角不是天蓝色,说明此时左上角小块的正确位置在二号位。#1是二号位,先处理2,再来处理1,放到下面2号位处理逻辑里去处理, 这里设置标记print("是二号位,先处理2,再来处理1")one_is_two = 1else:# 左上角是天蓝色,右上角非天蓝色,说明此左上角小块是三号位print("1是三号位, 1和3互换")# 1是三号位, 1和3互换d.click(x1- num_r(),y1- num_r())sleep(1)d.click(x3- num_r(),y3- num_r()) else:# 左上角不是天蓝色,说明此左上角小块是四号位print("1是四号位, 1和4互换")# 1是四号位, 1和4互换d.click(x1- num_r(),y1- num_r())sleep(1)d.click(x4- num_r(),y4- num_r())# print("处理2")sleep(2)# print(a2)if a2[0]> 0:if b2[0]>0:if c2[0]>0:# 初始的左上角小块,三个点都是天蓝色背景,说明此右上角小块是一号位print("2是一号位.")# 2是一号位.d.click(x2- num_r(),y2- num_r())sleep(1)d.click(x1- num_r(),y1- num_r())  #^ 2和1交换一次后,必须把1是二号位的标志清0,防止最后又交换一次.one_is_two = 0 else:print("2是二号位,不处理")# 2是二号位,不处理two_flag = 0passelse:print("2是三号位, 2和3互换")# 2是三号位, 2和3互换d.click(x2- num_r(),y2- num_r())sleep(1)d.click(x3- num_r(),y3- num_r()) else:print("2是四号位, 2和4互换")# 2是四号位, 2和4互换d.click(x4- num_r(),y4- num_r())sleep(1)d.click(x2- num_r(),y2- num_r())# 如果1是二号位,则在最后把1和2互换.    if one_is_two == 0:# print(one_is_two)passelse:sleep(2)d.click(x1- num_r(),y1- num_r())sleep(1)d.click(x2- num_r(),y2- num_r()) sleep(1)#^ 执行完一次拼图后,如果仍然在拼图界面,则再次进行拼图sleep(1)pintu = matchImg(pic_home,'./main_pic/pintu_jiemian.jpg')if pintu[0]>0:flag = 1print("仍然需要再次拼图")else:flag = 0

这里并没有把四个小块的顺序在第一次时都取出来,因为第一次交换位置后,又要记录所有的图案位置,比较复杂.
现在的代码最好的情况是调整两个图即可拿到正确结果.
就算第一次调整后没有得到正确结果,也可以保证有两个小块位置正确, 即最多也只需要再循环一次也可得到正确结果.

使用自动化处理某手游四宫格拼图问题相关推荐

  1. 四宫格效果 css_【深度教研】智力游戏“九宫格” 集体教研活动纪实

    [关键词]教研要建立过程模式,规范管理,分层推进,各负其责,及时反馈,展示总结.让教研的过程成为全体教师共同成长的过程.       游戏和材料不是一次性的制作和一次性的使用,其价值在于反复玩,玩中学 ...

  2. 我的计算机桌面被分成三格,用四宫格管理你的电脑桌面,工作效率蹭蹭蹭的提高...

    电脑桌面为什么要用四宫格? 电脑桌面上的文件很多,杂乱无章? 每天上班明明有很多事情要干,打开电脑却不知道从何着手了? 你需要管理自己的电脑桌面了. 这里给你推荐一个四宫格法,也是我自己一直在用的. ...

  3. html编写四宫格展示图片,七彩色图片排版工具一键制作四宫格图片教程

    七彩色图片排版工具是一款好用的图片排版工具.我们可以使用七彩色图片排版工具将电脑中的图片进行一键一键排版: 进入下载七彩色图片排版工具 2.1 官方版 大小:3.36 MB 日期:2019/2/25 ...

  4. html实现图片四宫格,CSS-实现全等四宫格的方案【Collection】

    全等四宫格.png 如上图,需求如下: 一个未知宽高的容器,要被均分为四个相同大小格子(即四个容器),且格子间有10px间距(即十字型空隙),有哪些方法可以解决呢? 分析问题 一般实现布局,用的多的是 ...

  5. Shader之旅2:四宫格画面实现

    书写本文的初衷是为了自我反省记录.如有表达不当,请批评指正 首先贴出shader代码.这段代码是实现相机拍摄画面四宫格的实现.分别传入不同的channel 0 1 2 3.然后将UV进行切割分为四块填 ...

  6. css布局方式,实现四宫格,九宫格,16宫格等切换

    1.借助absolute方位值,实现自适应的网格布局,用伪元素间隔 absolute+四个方位值撑开局面.float+宽度百分比实现横向排列.高度百分比实现自适应. 最外层的父元素使用absolute ...

  7. 你想用计算机做什么工作,用四宫格管理你的电脑桌面,工作效率蹭蹭蹭的提高...

    电脑桌面为什么要用四宫格? 电脑桌面上的文件很多,杂乱无章? 每天上班明明有很多事情要干,打开电脑却不知道从何着手了? 你需要管理自己的电脑桌面了. 这里给你推荐一个四宫格法,也是我自己一直在用的. ...

  8. GridView BaseAdapter设置四宫格的一些问题

    最近在项目中需要在主页中设置一个四宫格的页面, 于是就使用了GrideView与BaseAdapter的组合,但是完成后它会滑动,并不是固定的,而且它也不是适应其父容器大小设置的. 要解决这个问题,我 ...

  9. 开发小程序(一)设置四宫格

    需求:首页设置一个带有文字的简单四宫格 需要的技术支持: 1.顶部留空 2.背后的色彩块够大 3.色彩块不能顶格 4.其中的文字居中但不能顶格 代码采用两页:wxml+wxss,目前我个人水平有限,如 ...

最新文章

  1. 如何改android device monitor文件的权限
  2. 中国火电设备市场发展方向与投资策略研究报告2022版
  3. 循序渐进 OSPF的详细剖析(二)
  4. 185+日系清新预设调色PS/PR/FCPX/达芬奇/AE/通用LUT文艺森系滤镜(含安装教程)
  5. ROS2节点通信实现零拷贝
  6. 【CodeVS4093】EZ的间谍网络
  7. 毕业论文开题报告撰写指南-宾夕法尼亚州立大学研究生写作中心
  8. CodeForces 1009D Relatively Prime Graph 贪心+枚举
  9. 智慧城市建设带给安防企业的机遇与挑战
  10. flushia系统_IA 系统和应用 第七章 环境组态.pdf
  11. 基于Java+SSM+Vue农家乐管理系统(住宿-美食-活动)设计与实现
  12. 吾日三省吾身:三种光
  13. mac 破解安装 navicat
  14. FITC-GSL I荧光素标记的西非单叶豆凝集素 I
  15. reactjs 视频教程
  16. 河南对口计算机本科学校有哪些,河南省计算机专业对口升学能上什么大学
  17. 没听过超融合一体机你可就out了
  18. 问题 F: 真值表(Ⅰ)
  19. 三国志战略版S2开荒攻略
  20. 家具百货商城系统设计开发

热门文章

  1. 传音控股第三季营收129亿:净利6亿 同比降47.42%
  2. 计蒜客--第31题:无脑博士的试管们
  3. 怎样把U盘格式转换成NTFS格式?
  4. META实现出货检测卡托是否插入功能
  5. 主机防火墙配置模板linux,主机防火墙的设置与优化
  6. 电脑经常蓝屏是什么原因?
  7. Device Tree中的.dts和dtsi文件介绍
  8. openfire源码环境搭建
  9. 【读点论文】YOLOv4: Optimal Speed and Accuracy of Object Detection,讲明目标检测结构,分析先进的涨点tricks,实现一种精度与速度的平衡
  10. VMware Workstation Pro各版本免登录下载