这里介绍如何使用pyhton+adb实现自动公主连结闯关
此教程需要安装python和adb,相关知识请百度搜索
python环境一般电脑自带
这里是adb安装教程
一.用usb链接自己的手机
1.打开cmd
2.输入 adb devices
出现以上为链接正常
二.运行代码
1.打开python环境
如果没有接触过python的小伙伴可以在电脑搜索栏输入idle,然后ctrl+n新建
2.粘贴以下代码
这是公主连结第三章的代码
(1)主函数部分
import os
from PIL import Image
import time
import random
import tk_part
delay=int(tk_part.delay)
chap=int(tk_part.chap)
space=int(tk_part.space)
next_chap=2288,540
next_space=2145,495
s=1909,911 #挑战和战斗开始坐标
t=1917,977 #结束后下一步坐标
frist_space={1:(470,541),2:(511,801),3:(513,365),4:(641,453)} #这里储存每一章第一关的坐标,因为我没有过第五章,所以只记录了前面四章
num=0
# x=[100,513,629,813,1057,1021,1229,1333,1493,1605,1593,1877,1937]
# y=[100,365,601,453,469,685,793,561,397,533,749,709,437]
def start():
os.system('adb shell am start -n com.bilibili.priconne/com.bilibili.princonne.permission.PermissionActivity')
time.sleep(10)
def remove(a,b,c,d):
os.system('adb shell input swipe {} {} {} {}'.format(a,b,c,d))
def touch(x):
os.system('adb shell input tap {} {}'.format(x[0],x[1]))
time.sleep(0.7)
def evertouch(): #防止出现事件导致程序运行错误,设置屏幕一直点击
for i in range(0,delay):
if i%2:
os.system('adb shell input tap 1185 597')
else:
os.system('adb shell input tap 2287 200')
time.sleep(0.5)
def begin():
global num
# global chap
# global space
print("正在进行")
if not(num==0):
touch(frist_space[chap])
for i in range(1,num+space):
touch(next_space)
touch(s)
touch(s)
evertouch()
touch(t)
time.sleep(4)
touch(t)
for c in range(0,3):#加上这段就可以避免因为好感度打成导致程序错误
touch((1310,61))
remove(800,529,1397,529)#划到初始位置
time.sleep(4)
print("{}-{}完成".format(chap,num+space))
num=num+1
begin()
def main():
for d in range(1,chap):
touch(next_chap)
time.sleep(0.7)
if chap>=4:
remove(800,529,1397,529)#划到初始位置
touch(frist_space[chap])
for h in range(1,space):
touch(next_space)
begin()
if __name__ == "__main__":
main()
2.tk部分
import os
import tkinter as tk
from scrapy import cmdline
# class tk_part1():
# def __init__(self):
# self.delay
# self.space
# self.chap
def get_delay():
if enter1.get()!='':
global delay
delay=enter1.get()
if enter2.get()!='':
global chap
chap=enter2.get()
if enter3.get()!='':
global space
space=enter3.get()
print("延迟:{};开始章节为{}-{}".format(delay,chap,space))
print("关闭窗口程序即将开始。。。。。")
# def get_vars2():
# if enter2.get()!='':
# global var2
# var2=enter2.get()
# def main():
text=tk.Tk()
text.wm_attributes('-topmost',1)
text.geometry('440x100')
lab1=tk.Label(text,text='请输入每一关的预计要进行的时间 :').grid(row=0)
lab2=tk.Label(text,text='请输入从哪一关开始 : ').grid(row=1)
lab3=tk.Label(text,text='-').grid(row=1,column=2)
enter1=tk.Entry(text,width='5')
enter1.grid(row=0,column=1)
enter2=tk.Entry(text,width='5')
enter2.grid(row=1,column=1)
enter3=tk.Entry(text,width='5')
enter3.grid(row=1,column=3)
bt1=tk.Button(text,text='保存',command=get_delay).grid(row=3,column=4,ipadx=1)
lab2=tk.Label(text,text='请点击保存后关闭窗口,程序将开始运行').grid(row=3,column=0,ipadx=1)
text.mainloop()
# print("延迟:{};开始章节为{}-{}".format(delay,chap,space))
# if __name__ == "__main__":
# main()
如果想深入了解的小伙伴们课以在百度搜相关教程
因为每一章,每一关的位置不同,所以在完成一章后要重新输入每一关的坐标,本教程只提供了思路,需要小伙伴们自己去完成
已更新
这是程序运行的tk
链接:https://pan.baidu.com/s/12FqQpINpHd6C4Dxq5Yce8Q
提取码:x6it