python自动化安卓游戏

安装python

这个就不做过多的赘述了。

安装adb

这里也不做过多赘述。

安装Anaconda

关于Anaconda是什么,这个网上基本都有。
https://www.jianshu.com/p/62f155eb6ac5
这里写的非常清楚了。

安装PIL

Python Imaging Library,提供强大的图像处理功能。打算用这个截图分析。
但是安装的过程中,发现不能装,原来并非指令pip install PIL,而是pip install Pillow
PIL具体用法如下了:
https://blog.csdn.net/Yuancccc/article/details/89645900

pycharm中使用anaconda

pycharm中使用anaconda部署python环境
https://blog.csdn.net/qq_29883591/article/details/78077244

使用tesseract

要控制游戏,就需要对游戏的界面进行识别
https://digi.bib.uni-mannheim.de/tesseract/
安装这个又是个大坑
https://blog.csdn.net/qq_38161040/article/details/90668765?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

Python安装tesserocr遇到的一些问题:
https://blog.csdn.net/qq_35793285/article/details/81120440

Tesseract中文语言包

网上大部分的资源都是执行GitHub上,简直慢的不行。
当然也有人推荐https://github.com/tesseract-ocr/tessdata
以及https://digi.bib.uni-mannheim.de/tesseract/
通通行不通,我这暴脾气,直接去码云,找镜像。但是镜像需要全部下载,单个有点问题(知道原因的可以告诉我),历经千辛万苦,终于下载好了。
看到CSDN好多都是需要几十的积分,我就很烦。

问题:Tesseract couldn’t load any languages
环境变量设置错误,环境变量path中再加上安装位置。然后新建一个系统变量如下:
在这里插入图片描述
在cmd中输入tesseract -v, 如显示以下界面,则表示Tesseract安装完成且添加到系统变量中。
这样就算成功啦
赶紧试一下:
tesseract D:\毕业设计相关\test.jpg p1 -l chi_sim
在这里插入图片描述
在这里插入图片描述
识别准确率还不错哦
接下来就是在pycharm中使用啦,
tesseract安装完成后可以很方便的被Python调用,你需要安装两个包。

pip install pillow
pip install pytesseract

what?怎么还是不能用?
原来需要tesseract-ocr与python关联,从而使python能够调用Tesseract-OCR程序识别。
很好
注意文件地址的书写
在这里插入图片描述
啥也不说了,成就感爆棚好吧。

安装AndroidViewClient

之后就是安装AndroidViewClient,讲真,安装也是真的烦。因为据说他只兼容python2.7,。。。。
先装个虚拟环境
失败了,嗯,果然在我意料之中,就没一帆风顺过
用清华的镜像,还是gg
换个思路,我们看每次安装前,他要先找依赖包,我们先用镜像把依赖包下好,不就行了:
在这里插入图片描述
大功告成!!!
**注意:不能任由他自己下载,要随时注意安装他的依赖包,用清华的镜像很快就下好了。
**让他自己慢慢下,我知道今天肯定是完不成的。
主要命令就是
easy_install --upgrade androidviewclient -i +【镜像】
![需要注意的点,我都在图中标了](https://img-blog.csdnimg.cn/20200614212208412.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Rhb2lzdDE5OTc=,size_16,color_FFFFFF,t_70
AndroidViewClient有个强大的工具,就是culebra,网上说Culebra可以帮助我们自动生成(录制)AndroidViewClient脚本。它提供了一个GUI,当我们通过GUI上操作手机,就会自动产生AndroidViewClient控制脚本模板,我们可以再在这个模板脚本基础上进行修改,实现更复杂的功能。具体介绍如下:
https://github.com/dtmilano/AndroidViewClient/wiki/culebra
不过说实话,实际运行起来有点。。。。。和我想象中的有点区别。
![!](https://img-blog.csdnimg.cn/20200614214257156.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Rhb2lzdDE5OTc=,size_16,color_FFFFFF,t_70)
运行起来实在是太慢了啊啊啊啊,见得最多的还是下图:
人都傻了呀
网上查了一下,可能是安卓版本的问题,毕竟现在安卓版本都蛮高了。
于是打算换一个思路。

获取手机截图

https://blog.csdn.net/m0_37868504/article/details/86246598
这篇文章描述的很详细,但是python复制粘贴也太不友好了吧,把tab和空格要统一,而且缩进也比较苛刻,佛了。
这里我小米手机,适合第二种方法,然后就开心的获取到啦。
这个时候就要图片匹配啦
open-cv里有模板匹配matchTemplate,可以帮我们判断,我们现在在什么位置。
顺带说下,opencv安装也是大坑命令是:pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述

在这里插入图片描述

代码

def son():
    #义子
    i=0;
    #进入
    auto1.double_click(1, 1079, 1340)
    #第一个义子
    auto1.double_click(1, 515, 1170)
    while not cancelTip():
        i=i+1
        auto1.double_click(1, 515, 1170)
        if i>3:
            i = 0
            break
    auto1.double_click(1,  392, 1250)
    #第二个义子
    auto1.double_click(1, 406, 1920)
    auto1.double_click(1, 515, 1170)
    while not cancelTip():
        i = i + 1
        auto1.double_click(1, 515, 1170)
        if i > 3:
            i = 0
            break
    auto1.double_click(1,  392, 1250)
    #第三个义子
    auto1.double_click(1, 586, 1920)
    auto1.double_click(1, 515, 1170)
    while not cancelTip():
        i = i + 1
        auto1.double_click(1, 515, 1170)
        if i > 3:
            i = 0
            break
    auto1.double_click(1,  392, 1250)
    auto1.double_click(1, 1000, 250)

```#主要获取截图,比对,然后点击相应的坐标,主要是判断
#操作手机代码
def swipe_down(x1, y1, x2, y2):
    print("滑动")
    value=adb_path + "adb shell input swipe " + str(x1) + " " + str(y1) + " " + str(x2) + " " + str(y2)+" 100"
    print(value)
    os.system(value)
    time.sleep(1)

def click_power():
    os.system(adb_path + "adb shell input keyevent 26")
    time.sleep(0.5)

#控制屏幕唤醒,并解锁
def click(x, y):
    os.system(adb_path + "adb shell input tap " + str(x) + " " + str(y))
    time.sleep(0.5)
    def __init__(self,count):
        self.count=count
    def wakeup_sleep(self):
        cmd="adb shell input keyevent 26"
        os.popen(cmd)
        time.sleep(1)
    def autoWakeupSleep(self):
        i=1
        while (self.count >0):
            print("唤醒/灭屏第%d次" %i)
            i+=1
            self.wakeup_sleep()
            self.count=self.count - 1
            print("亮屏完毕")

结束

终于结束了折腾了一天多,等做好的时候,对游戏也没多大兴趣了。。。。。
不过过程还是学到蛮多东西的。写完文章,再回头一看,这写得什么玩意,各位看官轻点喷啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值