大家好。
近日来,一款名为阴阳师的游戏引诱了我,使我沉迷于网络游戏,日渐消瘦的我,荒废了时日,忘记了社会主义接班人的使命,忘记了构建人类命运共同体的伟大抱负。
为了挽救我美好的青春,为了挽救我的人生,为了未来的爱与梦想,为了从游戏的不真实世界中走出来,重新回到光明社会中去。
我做了一个伟大的决定。
我写了个脚本玩阴阳师。
效果是这样的:
回忆当初,寂寞的我,在电脑上安装了网易的MUMU模拟器,想着学习科学知识的。没想到,在无知与茫然中,安装了阴阳师的APK。
为了摆脱网络游戏的诱惑,我做了持之以恒的抗争。
道路十分曲折。如神农尝百草,尝试了种种治疗手段。
一、pyautogui
这个库可以模拟人工输入和鼠标操作。经过一番资料搜索,用这个库实现自动操作阴阳师的大概思路是这样的:
将模拟器的窗口位置固定,截屏整个游戏界面,然后结合图像处理库,找到对应按钮的像素值范围从而确定鼠标点击的位置,进行鼠标操作。
代码:
实际操作的时候,关键点在于按钮的像素值范围的设置。使用微信截图然后找到像素值的RGB,然后估摸着确定范围。所以,结果就是,鼠标会乱点击,点击不到按钮。
这个方案,唉。
二、uiautomator
经过我深思熟虑,发现控制游戏的最关键地方在于找到鼠标点击的位置,也就是元素定位。
所以又经过一番资料查找,发现android的SDK里的uiautomatorviewer工具可以找到元素定位,利用python的uiautomator库就可以直接点击元素。
但是,当用uiautomatorview工具定位按钮元素时:
只找到一个整个游戏界面的view。非常遗憾。
这个方案,唉唉。
三、ATX
经过多次骚扰度娘,终于让我找到了。
网易的游戏测试模块-ATX。具备图片识别的功能,封装了uiautomator库,简单易用,药到病除。只需要把需要点击的按钮截图下来,再调用相关方法即可。
截取的按钮图片:
粗略的代码是这样的:
大功告成。我挽救了我美好的青春,挽救了我的人生,为了未来的爱与梦想,从游戏的不真实世界中走出来,重新回到光明社会中去,实现构建人类命运共同体的抱负的时刻来临了。
然而,不仅要图像识别,又要开模拟器玩游戏,电脑卡得要死。
还不如,痛苦玩游戏呢。
情不自禁地,我拿起手机。
沉迷游戏,不能自拔。
2017.12.8
领取专属 10元无门槛券
私享最新 技术干货