本来是两周的计划,结果太感兴趣了,只花3个晚上,每晚从22:30~01:50,疯狂百度,自学相关知识,克服很多难关,冥思苦想,然后写出来的很low的算法,虽然只能玩个250分左右。。。但是我还是很开心,毕竟9个月前连电脑怎么使用都不知道。(但是熬夜很痛苦,近视加深,眼睛痛,头痛,腰痛,只希望头发绝对不要离我而去 Q A Q )
import os import time from PIL import Image import math os.system('cd C:\ Users\27984\Desktop\ImageSet') # 你建立的项目的目录,注意不能有空格! x = 10000 while (x > 0): x = x - 1 os.system('adb shell screencap -p /storage/emulated/0/1.png') # 把截图存在手机里 os.system('adb pull /storage/emulated/0/1.png') # 存到电脑的项目目录里 img = Image.open('1.png') # 打开图像并转化为数字矩阵 px = img.load() a = px[540, 150] # 识别背景颜色 b = (0, 0, 0, 0) e1 = e2 = s1 = s2 = 0 for i in range(400, 1300): for j in range(100, 1000): b = px[j, i] if abs(a[0]-b[0]) > 20 or abs(a[1]-b[1]) > 20 or abs(a[2]-b[2]) > 20: # 误差范围内判断 break if abs(a[0] - b[0]) > 20 or abs(a[1] - b[1]) > 20 or abs(a[2] - b[2]) > 20: break e1 = j # 终点坐标 e2 = i + 90 a = (40, 40, 70, 255) # 小人的颜色 for j in range(20, 1050): for i in range(480, 1440): b = px[j, i] if abs(a[0]-b[0]) < 10 and abs(a[1]-b[1]) < 10 and abs(a[2]-b[2]) < 10: # 比较误差 break if abs(a[0] - b[0]) < 10 and abs(a[1] - b[1]) < 10 and abs(a[2] - b[2]) < 10: break s1 = j+35 # 起点坐标 s2 = i+5 dis = (s1-e1)*(s1-e1) + (s2-e2)*(s2-e2) dis = math.sqrt(dis) # 实际距离 t = int(355.0 * dis / 270) # 系数,需要不断尝试 if t > 910: # 特殊情况的判断处理 t = 910 if t > 620 and t < 780: # 系数校准 t = int(t * 1.03) if t < 260: t = 300 if t > 330 and t < 440: t = t - 27 print('起点:', s1, ' ', s2, ' 终点:', e1, ' ', e2, ' 距离:', int(dis)) print('按压时长:', float(t / 1000.0), '秒 ') os.system('adb shell input swipe 540 1600 541 1601 '+str(t)) # 按压屏幕 time.sleep(0.5) //休眠0.5秒
对于零基础的人,操作步骤思路:
1.下载pycharm,新建项目,把上面的代码粘贴上去
2.你会发现代码有报错,于是需要安装pillow包,math包,os包,time包,安装方法自己百度
3.安装adb,安装方法自己百度(别忘了配置环境变量)
4.用usb线把电脑连接到手机,并打开usb调试,微信打开跳一跳
5.在pycharm里同时按Shift+Ctrl+Fn+F10运行程序(也可以配置python的环境变量,然后用命令行执行程序,也很方便)
ok!
但是,这些可能都逃不过微信的天眼:
Enjoy yourselves!