ADB基本操作及びゲーム自動対戦の実現

9672 ワード

ADB基本操作及びゲーム自動対戦の実現


基礎知識


まず、コンピュータにADBを装着し、データ線で携帯電話に接続し、USB に変更する必要があります.コマンドラインでは、以下のコマンドをテストできます.
//  
adb devices
//  
adb connect 192.168.31.198:5555
//  
adb shell input tap [ ]
//  
adb shell input swipe [ ] [ ] [ ]

[画面上の位置座標][時間単位ms]

ゲーム自動対戦を実現


デバイスが接続されているかどうかを確認します.
C:\Users\Administrator>adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
a8278daa        device


Jupyter Notebookを使用したプログラムの実行
C:\Users\Administrator>jupyter notebook

Demoを開いて実行するプログラムは事前に書かれており、「野蛮人大作戦」ゲームではN回の対戦を実現し、ゲームの中であちこちを走り回り、ゲームが終わると自動的に次のゲームを開き、ゲームの回数をブラシすることができる.
# - n 
import os
import random
import time
btn_yule="1750 800"
btn_duiz="1870 970"
btn_end="1988 1010"
btn_next="2010 1000"
#  
os.system("adb connect 192.168.31.198:5555")
def tap(btn):
    os.system("adb shell input tap {}".format(btn))
    
posC="500 800"
posR="800 800"
posL="200 800"
posD="500 1000"
posU="500 500"

def swipe(pos1,pos2,dur):
    os.system("adb shell input swipe {} {} {}".format(pos1,pos2,dur))
    
def right():
    swipe(posC,posR,3000)
    tap(btn_duiz)
def left():
    swipe(posC,posL,3000)
    tap(btn_duiz)
def down():
    swipe(posC,posD,3000)
    tap(btn_duiz)
def up():
    swipe(posC,posU,3000)
    tap(btn_duiz)
############### n ##########################    
n=3
while(n>0):
    tap(btn_duiz)
    tap(btn_duiz)
    since=time.time()
    now=time.time()
    while(now<since+360):
        a=random.random()
        if a<0.2:
            right()
        elif a<0.5:
            left()
        elif a<0.75:
            down()
        else:
            up()
        now=time.time()
    time.sleep(5)
    tap(btn_end)
    time.sleep(5)
    tap(btn_next)
    time.sleep(3)
    tap(btn_next)
    time.sleep(5)
    tap(btn_next)
    tap(btn_next)
    n=n-1