连连看(四)

article/2025/3/1 6:37:14

 

Python3 实现QQ游戏连连看游戏辅助

  • 连连看(零)—— 前记
  • 连连看(一)—— 你看,这是截图啊
  • 连连看(二)—— 哦吼,PIL + CV2 + Numpy 假图像识别构建矩阵
  • 连连看(三)—— 拐了拐了啊,卖拐啦(连线规则)
  • 连连看(四)—— 你看我这鼠标比用户还真(Pymouse 的替身)
  • 连连看(五)—— 后记 + 成果展示

目录

Python3 实现QQ游戏连连看游戏辅助

1、消除

2、自动点击


1、消除

这两个函数应该非常简单易懂,就是根据矩阵中的数字来寻找与之相同的数字的位置并存储下来。(game数据结构请看第一篇文章)

简单介绍一下 np.where(matrix, item),它的返回值也是 np.array,res[0] 中是元素的 row,res[1] 中是元素的 col。

    # 寻找一张相同图片位置def where_is_bros(self, num: int):res = np.where(self.game_map == num)for i in range(0, len(res[0])):self.bros.append((res[0][i], res[1][i]))return self.bros# 寻找所有相同图片def family(self):for i in range(1, self.total):self.fam[i] = self.where_is_bros(i)self.bros = []# for item in self.fam.keys():#     print(item, self.fam[item])

接下来就是拿着这些点进行逐个尝试连接,可以连接的话记录在 self.step 并且将对应两个位置置为 -1。

注意:这里写的时候发现了一个bug,需要注意的是删除的顺序,画一个图给大家展示一下。

# 自动连接
def linking(self):for bro in self.fam.values():for i in range(0, len(bro)):for j in range(i + 1, len(bro)):try:if self.erasable(bro[i][0], bro[i][1], bro[j][0], bro[j][1]):self.steps.append((bro[i][0], bro[i][1], bro[j][0], bro[j][1]))self.boom(bro[i][0], bro[i][1], bro[j][0], bro[j][1])# 注意这里的删除顺序十分重要# 先删除了小坐标 i 的话 大坐标 j 立即发生改变 不指向原来的bro[j]del bro[j]del bro[i]returnexcept IndexError as err:# print("Ignore bro error.")continue

 

2、自动点击

由于 Python3 无法使用Pymouse,所以使用win32api,佐以 win32con 实现,用法比较固定,注释也比较详细,不再赘述。

# 自动点击
def auto_click(self):print("[step4]:Auto clicking...")l, t, r, b = find_window()#  row: 19 * 31   col: 11 * 35left = l + 14  # 14px的左边界,连连看(一)中有图解top = t + 180  # 180px的上边界,连连看(一)中有图解for item in self.steps:# 第一次的 sleep 符合常规就好 当然设置为零有惊喜,详见连连看(结语)time.sleep(random.randint(2, 13) / 10)# 这里加的15是31//2,17是15//2# 目的是点击小方块的中间位置win32api.SetCursorPos((left + item[1] * 31 + 15, top + item[0] * 35 + 17))win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)# 第二次点击的 sleep 可以少一点,符合人的操作time.sleep(random.randint(0, 5) / 10)win32api.SetCursorPos((left + item[3] * 31 + 15, top + item[2] * 35 + 17))win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)print("(%s, %s)(%s, %s)" % (item[0], item[1], item[2], item[3]))print("Finished!")

【完】

【下一篇:连连看(五)—— 后记 + 成果展示】


http://chatgpt.dhexx.cn/article/08CDOy0k.shtml

相关文章

java基础2

1、mysql语句执行顺序 from on join where group by having select distinct union order by 我们看到on是在join和where前面的 如果两张表的数据量都比较大的话,那样就会占用很大的内存空间这显然是不合理的。所以,我们在进行表连接查询的时候一般都会…

机器学习基础知识点

机器学习基础知识点 文章目录 机器学习基础知识点监督学习回归线性回归岭回归lasso回归 分类k最近邻分类朴素贝叶斯分类logistic回归支持向量机 其他随机梯度下降线性判别分析决策树 无监督学习聚类k均值分层次聚类谱聚类高斯混合模型 降维PCA降维LLE降维MDS和t-SNE独立成分分析…

文本三剑客——awk 截取+过滤+统计

目录 一、awk是什么? 1、GNU是什么? 2、相关命令选项 3、awk有什么用 4、awk用在哪里 二、awk 命令的简要处理流程 1、分隔符 三、awk命令的内置变量 四、awk命令的完整语法 1、格式 2、 awk 中 gsub和tr命令的使用 1、gsub:替换 …

安卓APP——基础控件

目录 一、4种基础控件二、padding和margin三、制作一个登录界面 一、4种基础控件 Button 按键TextView 文本框EditText 输入框ImageView 图片&#xff0c;带边框的 <ImageButton android:layout_width"wrap_content"android:layout_height"wrap_content&qu…

现场编程

目录 组员职责分工github 的提交日志截图程序运行截图程序运行环境GUI界面基础功能实现运行视频 LCG算法过滤&#xff08;降权&#xff09;算法 算法思路红黑树附加功能一 背景实现附加功能二&#xff08;迭代中&#xff09;附加功能三 背景引言解决方法实现效果效果截图遇到的…

iOS之富文本总结

文章内容大纲 1、NSMutableAttributedString的基本使用2、NSMutableAttributedString的简易封装3、使用开源代码GOBMarkupPaser处理富文本4、UITextKit简介5、编程思想的相关思考 前言 富文本使用案例&#xff1a; 这里我自己也用了富文本实现了简单的却也是常用的例子&#xf…

【读书笔记《Android游戏编程之从零开始》】20.游戏开发基础(游戏数据存储)...

对于数据的存储&#xff0c;Android 提供了4种保存方式。 (1)SharedPreference 此方法适用于简单数据的保持&#xff0c;文如其名&#xff0c;属于配置性质的保存&#xff0c;不适合比较大的情况&#xff0c;默认存放在手机内存里 (2)FileInputStream/FileOutputStream 此方式比…

Demo06-GUI编程

GUI编程 1. 简介 GUI的核心技术&#xff1a;Swing AWT 2. AWT 2.1 Awt 介绍 awt 指抽象的窗口工具&#xff0c;包含了很多类和接口&#xff0c;用于GUI编程&#xff1a;图形用户界面编程元素&#xff1a;窗口&#xff0c;按钮&#xff0c;文本框java.awt [外链图片转存失…

【Java基础】语法基础

本文适合有编程基础或是需要Java语言复习的家人们食用~ 一、Java语言介绍 本篇文章使用的JDK版本是1.8&#xff08;即JDK 8&#xff09;Java语言是运行在JVM上的&#xff0c;有了JVM&#xff0c;Java语言得以在不同操作系统上运行垃圾回收机制&#xff1a;Java语言提供了一种…

编程算法集锦

编程算法集锦 一、分治法1.分治法介绍2.归并排序3.快速排序4.中值问题 二、贪心法1.贪心法2.最小生成树Kruskal算法3.Huffman编码4.单源点最短路径 三、回溯法1.回溯法-n皇后问题2.子集和数 四、动态规划1.数塔问题2.最长公共子序列3.求序列-2 11 -4 13 -5 -2的最大字段和4.求最…

富文本的使用 NSMutableAttributedString

文章内容大纲 1、NSMutableAttributedString的基本使用2、NSMutableAttributedString的简易封装3、使用开源代码GOBMarkupPaser处理富文本4、UITextKit简介5、编程思想的相关思考 前言 富文本使用案例&#xff1a; 这里我自己也用了富文本实现了简单的却也是常用的例子&#x…

iOS 开发 富文本

http://www.itnose.net/detail/6177538.html 文章内容大纲 1、NSMutableAttributedString的基本使用2、NSMutableAttributedString的简易封装3、使用开源代码GOBMarkupPaser处理富文本4、UITextKit简介5、编程思想的相关思考 前言 富文本使用案例&#xff1a; 这里我自己也用…

软工第三次作业-结对编程

结对项目-最长英语单词链 哈哈&#xff0c;这次记住了&#xff0c;来&#xff0c;初始化&#xff01; 项目内容这个作业属于哪个课程2023年北航敏捷软件工程社区这个作业的要求在哪里结对项目-最长英语单词链我在这个课程的目标是学习软件开发的原则、方法&#xff0c;并对敏捷…

Python基础编程习题

警察局抓了a&#xff0c;b&#xff0c;c&#xff0c;d四名偷窃嫌疑犯&#xff0c;其中只有一人是小偷。审问中 a说&#xff1a;“我不是小偷。” b说&#xff1a;“c是小偷。” c说&#xff1a;“小偷肯定是d。” d说&#xff1a;“c在冤枉人。” 现在已经知道四个人中三人说的…

四面体的表面积_如何求正四面体的体积和表面积?

当正四面体的棱长为a时&#xff0c;体积&#xff1a;√2a/12&#xff0c;表面积√3a^2。 解答过程如下&#xff1a; 正四面体是由四个全等的正三角形所组成的几何体。它有四个面、四个顶点、六条棱。每个二面角均为7032’&#xff0c;有四个三面角&#xff0c;每个三面角的面角…

空间四面体的面积、体积运算

基于C#窗体应用程序。通过添加控件&#xff08;Button、Label、TextBox&#xff09;来实现相应的功能。 目录 一、界面设计 二、编写代码 1、计算体积 2、计算面积 三、编译调试 四、实现效果 一、界面设计 二、编写代码 1、计算体积 double A1, A2, A3, A4, value; A…

四面体体积求法

四面体&#xff08;三棱锥&#xff09;体积 &#xff1a; 设 有&#xff1a; 不过这是有向的。如果知道那四个顶点&#xff0c;用这个公式即可求出体积。 如果不知道四点仅知道6条边长&#xff0c;就得用下面的方法——欧拉四面体公式 写成行列式&#xff1a; 那么有&…

matlab 四面体体积

计算方法&#xff1a; 已知四面体顶点坐标分别为 (x1,y1,z1)&#xff0c; (x2,y2,z2)&#xff0c; (x3,y3,z3)&#xff0c; (x4,y4,z4)&#xff0c; 可以通过如下两种方法求四面体体积&#xff1a; 1. 利用向量的混和积 过一顶点的三向量设为a&#xff0c;b&#xff0c;…

C++:使用类方法根据四点计算四面体体积

一个四面体有四个点&#xff0c;分别为a (x1, y1, z1), b (x2, y2, z2), c (x3, y3, z3), 以及d (x4, y4, z4)&#xff0c;计算该四面体的体积。 &#xff08;1&#xff09;四面体计算公式 &#xff08;2&#xff09;三维空间的两点的点乘 &#xff0…

【HDU1411】四面体的体积公式

1.题目链接。题目大意&#xff1a;就是给出一个四面体的六条边&#xff0c;求出这个四面体的体积。 2.这个&#xff0c;如果知道坐标是很好解决的&#xff0c;假设我们知道的是坐标&#xff1a; 体积就是混合积的六分之一。&#xff08;什么&#xff1f;x,y,z是啥&#xff1f;…