说明

简述:本文将以4399小游戏《宠物连连看经典版2》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。

运行环境:Win10/Python3.5。

主要模块:win32gui(识别窗口、窗口置顶等操作)、PIL(屏幕截图)、numpy(创建矩阵)、operator(比较值)、pymouse(模拟鼠标点击)。

注意点:

1、如果安装pymouse不成功或者运行报错,可以考虑先通过whl 安装pyHook、然后再通过pip安装pyuserinput。

2、如果报错 [ImportError: No module named 'windows' ],可以修改__init__.py相应的行 为 windows => pymouse.windows。

开发流程

总体开发思路:截取游戏主图 ---> 分割成小图 ---> 对比每个小图,对比图片相识度,编号存入矩阵 ---> 对矩阵进行可连计算 ---> 模拟点击。

获取窗口句柄,把窗口置顶

Python可以使用win32gui模块调用Windows API实现对窗口的操作,使用FindWindow()方法可以获取窗口的句柄(handle),需要传入两个参数,第一个为父窗口句柄(这里填0即可),第二个参数是窗口的名称(标签title - Google Chrome)。获取句柄之后然后通过SetForegroundWindows() 设置窗口在前面,这里传入游戏窗口的举报即可,代码如下:

截取游戏界面,分割图标,图片比较

根据初始化设定的左上角和右下角两个坐标,使用ImageGrab.grab()方法进行截图,传入一个元组即可,然后对这个大图进行分割,切割成一个个小图标存入到images_list数组中。

通过上面代码切割的小图标,转成数字矩阵,如果图标已经存入image_type_list则返回这个索引,如果不存在,则在追加进去,然后当前长度就是这个新加入图标的编号,代码如下所示:

上面的getIndex就是对比图片,判断图标是否出现过(是否已存在image_type_list中,没出现则追加进去),这里使用汉明距离判断两个图片的相识度,设置阀值10,当小于阀值则认为是同一个图片,具体代码如下:

程序核心-图标连接算法(路径寻找)

算法的思路:路径的寻找首先是寻找一个坐标的横向竖向可以直接相连的坐标集合,比如坐标p1(1,1)这样的集合有[ (0,1), (1,0) ],另外一个坐标p2(1,10)的可连集合为[ (0,10) ],然后再对p1和p2的可连坐标集合进行比较,如果集合中坐标也有可连,则表示p1和p2可连,很明显,(0,1)和(0,10)为同一行且可连,这样就表示p1和p2两点存在可连路径了,代码如下所示:

简单分析下代码实现过程:在isReachable()传入两个需要比较的坐标值,然后分别获取两个点横竖向(isRowConnect()、isColConnect())可以连接的坐标集合,最后再对集合进行遍历比较是否存在可连的,如果存在则表示传入的两个坐标是可以连接的。

python辅助脚本教程_[Python] 用python做一个游戏辅助脚本,完整思路相关推荐

  1. [Python] 用python做一个游戏辅助脚本,完整思路

    [Python] 用python做一个游戏辅助脚本,完整思路 一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴 ...

  2. 不愧是大佬用Python做一个游戏辅助脚本,完整编程思路分享!

    一.说明 简述:本文将以4399小游戏< 宠物连连看经典版2 >作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助.文末有Python资料和 ...

  3. 用Python做一个游戏辅助脚本(含完整编程思路)

    一.说明 简述:本文将以4399小游戏< 宠物连连看经典版2 >作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/ ...

  4. python电脑下载教程_苹果电脑python下载安装教程

    这个问题我遇到过的,你把现在装的python卸了,装个32位的python就可以了,32位安装包官网上有. . 工具/原料:python.win7电脑一台方法/步骤:1.打开win7电脑,从百度搜索p ...

  5. python微信使用教程_小白用Python | 十分钟Python玩微信教程

    原标题:小白用Python | 十分钟Python玩微信教程 代码放在这里:wzyonggege/python-wechat-itchat 词云那里可以换成小黄人图片 ---------------- ...

  6. python输出最大值教程_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

  7. python web.py教程_如何用Python汇款:Web3.py教程

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Python开发人员对于以太坊和区块链库的技术练习. 警告:下面的教程包含这些元素:显式加密.点对点金融服 ...

  8. python大神教程_大神python教程415集全套,拿走不谢

    大神的教程 由北京尚学堂高淇老师亲自录制,2019Python自学教程全新升级为<Python+数据分析+机器学习>能力逐级提升,打造技能更全面的全栈工程师. Python作为一种编程语言 ...

  9. python标签使用教程_怎样用Python做标签云

    怎样用Python做标签云 标签云是比较直观的频率分布表现方式,很多网站和APP在年度盘点和总结时会使用.Python生成标签云有一个比较易用的库 pytagcloud. Python做标签云的具体方 ...

最新文章

  1. python自带的shell是什么-python shell是什么东西
  2. PyInstaller用法
  3. ubuntu14.04安装 R16 Tina Linux SDK
  4. [网摘]动态SQL中set与select对变量赋值的影响
  5. 关于Python在Linux、Mac和Windows上的安装方法总结
  6. 2019级C语言大作业 - BrickMansions
  7. Tableau可视化学习笔记:day01-02
  8. Vue-Less的自动和手动引入
  9. 2018-9-25 进入公司第一天
  10. 算法89---图的最小生成树
  11. Ubuntu下挂载Windows分区
  12. [MRI]核磁共振头线圈和体线圈
  13. 利用poi 1.6 通过模板导出复杂 Word表格,包含合单元格后垂直居中、循环生成行等
  14. 代码已上传至googlecode
  15. 昆仑万维:如涵在纳斯达克挂牌 公司持有其3.91%股权
  16. project2010根据法定节假日更改工作时间
  17. 【动态规划】股票交易日
  18. 爱码物联SaaS|一物一码技术如何助力线下流量营销?
  19. ubuntu如何杀进程_ubuntu查看并杀死进程
  20. 警告关于测试人员的职场生存,千万要避开这5个坑(不看后悔)

热门文章

  1. Spring Boot2.0之性能优化
  2. java-DateFormat
  3. webpack 实用配置总结
  4. iOS设计模式-适配器
  5. SharePoint对象模型性能考量
  6. GDAL源码剖析(五)之Python命令行程序
  7. structs中国际化小结
  8. 在dotnetnuke中去掉显示姓名中的空格
  9. java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战
  10. [SmartFoxServer入门]服务器安装