用python做了一个QQ炫舞机器人,还是很简单的

前言

2个晚上的时间,累计大约有6个多小时吧,用 python 实现了一个 qq炫舞 的机器人。

qq炫舞这个游戏就是很多年前比较流行的,出现 一排上下左右,在规定时间内正确输入,然后再在关键点狠拍空格键的那种游戏。

里面把关键技术都说的差不多了,我在这里只大概总结一下自己的心得。

实现思路

一个死循环不停在游戏中截图,

检测到该按方向键的时候, 检测所有方向键,并给游戏发送 方向键 键盘事件

检测到该按空格键的时候, 按下空格键

所有的检测都是基于 像素颜色来检测的

了解到 python 有 autopy 这个库, 可以模拟一些窗口消息。

但是我在这个例子里没有用到,而是用的 win32api 这个库。

win32api 这个库,可以像 windows sdk 一样,调用 windows sdk 的函数,非常方便,也更接近 windows 底层

用到了 PIL 库 , 尤其是 PIL 库 截图的部分.

图像检测,是哪个方向键(上下左右?),以及是不是该按方向键,还是该按空格键,都是基于像素颜色的检验。

参考的文章中,给出了 匹配相似图的算法,但是我发现在我这里 貌似不能用。

他们的做法我大概看了一下,印象是取图片 所有像素 数值的和,与 目标图片的 像素和 做比对。

但是我这里 上下左右4个按钮 ,像素和应该基本一样,所以这种方法不能用,采取了最笨拙的 ,比对关键点颜色是否为蓝色 来判定的。

了解了一下 python的多线程,虽然最后没有用上。

windows sdk 的 keybd_event 第二个参数是 硬件扫描码。

如果传0 的话,在模拟 键盘消息时候,会出现 在游戏中模拟 无效的情况,必须用 MapVirtualKey() 填写正确的 值,游戏才认为输入有效。

大量使用了 windows 的画图工具量坐标。。

本来想用 python 面向对象一下, 想封装一下。。可是太晚了,今天把功能实现了很高兴了,来不及封装。代码就先这样吧。

由于本轮开始的判定,写的不那么精确,导致偶尔出现 本轮开始判定不准确,不会输入方向键的情况。但是只要多花点时间,是能够改好的。

用自己的 "挂" 和其他 “选手“ pk了一把, 3个人里面我排第2。。至少证明我的挂在不做调优的情况下,是能够战胜一批对手的。。是管用的。

嗯,大概关于这个脚本就到这里吧。

最后上代码,功能实现了,但是很乱,凑合看吧,当个留念。纪念自己第一个没啥技术含量的 “外挂"

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180611A1VJ6R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券