用python做了一个 qq炫舞 机器人

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

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

媳妇最近去了这个公司上班,工作需要,去接触了这款游戏。我也在旁边观摩了一阵,自己怎么也玩不好,然后就想到是不是可以自己动手做一个自动玩这个游戏的机器人。


主要参考了这几篇文章,


1,用Python实现QQ找茬游戏外挂工具

http://cpiz.net/blog/2012/03/a_qq_zhaocha_assistant_by_python/


2.用Python制作游戏外挂

http://eyehere.net/2012/python-game-bot-autopy-1/



里面把关键技术都说的差不多了,我在这里只大概总结一下自己的心得。(时间太晚。。困死了,明天还要上班)


实现思路是

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

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

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

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


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

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

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


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


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

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

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

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


4.了解了一下 python的多线程,虽然最后没有用上。但是做了一下科普.


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

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

游戏才认为输入有效。


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


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


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


9. 用自己的 "挂" 和其他 “选手“ p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值