java 外挂微信跳一跳_用java编写微信跳一跳辅助

微信跳一跳辅助

import math

import os

import tempfile

import time

from functoole import reduce

from PIL import Image

BACKGROUND_POS = {40,500}

DISTANCE_TO_TIME_RATIO =1.35

SCREENSHOT_PATH = tempfile.gettempdir()+"/screenshot.png"

def calculate_jump_distance():

im =Image.open(SCREENSHOT_PATE)

baxkround_rgb = im.getpixel(BACKGROUND_POS)

role_pos_list = None

vertex1_pos = None

block_background_rgb = None

vertex2_pos = None

role_line_flag = True

for y in range(BACKGROUND_POS[1], im.height):

if role_pos_list and role_line_flag:

break

role_line_flag = True

vertex2_line_flag = True

for x in range(BACKGROUND_POS[0], im.width):

current_rgb = im.getpixel((x, y))

next_rgb = im.getpixel((x + 1, y)) if x + 1 < im.width else (0, 0, 0)

# 识别顶点1

if x > BACKGROUND_POS[0] and y > BACKGROUND_POS[1] and not vertex1_pos

and not is_similar(background_rgb, current_rgb) and is_similar(current_rgb, next_rgb):

vertex1_pos = (x, y)

block_background_rgb = current_rgb

# 识别顶点2

if block_background_rgb and vertex2_line_flag and is_similar(current_rgb, block_background_rgb, 5):

vertex2_line_flag = False

if vertex2_pos:

if x < vertex2_pos[0] and vertex2_pos[0] - x < 20 and y - vertex2_pos[1] < 20:

vertex2_pos = (x, y)

else:

vertex2_pos = (x, y)

# 识别小人

if is_part_of_role(current_rgb):

if role_line_flag:

role_pos_list = []

role_line_flag = False

role_pos_list.append((x, y))

if len(role_pos_list) == 0:

raise Exception('无法识别小人位置!!!')

pos_sum = reduce((lambda o1, o2: (o1[0] + o2[0], o1[1] + o2[1])), role_pos_list)

role_pos = (int(pos_sum[0] / len(role_pos_list)), int(pos_sum[1] / len(role_pos_list)))

destination_pos = (vertex1_pos[0], vertex2_pos[1])

return int(linear_distance(role_pos, destination_pos))

def is_part_of_role(rgb):

return 53 < rgb[0] < 59 and 57 < rgb[1] < 61 and 95 < rgb[2] < 103

def linear_distance(xy1, xy2):

return math.sqrt(pow(xy1[0] - xy2[0], 2) + pow(xy1[1] - xy2[1], 2))

def is_similar(rgb1, rgb2, degree=10):

return abs(rgb1[0] - rgb2[0]) <= degree and abs(rgb1[1] - rgb2[1]) <= degree and abs(rgb1[2] - rgb2[2]) <= degree

def screenshot():

os.system("adb shell screencap -p /mnt/sdcard/screencap.png")

os.system("adb pull /mnt/sdcard/screencap.png {} >> {}/jump.out".format(SCREENSHOT_PATH, tempfile.gettempdir()))

def jump(touch_time):

os.system("adb shell input swipe 0 0 0 0 {}".format(touch_time))

def distance2time(distance):

return int(distance * DISTANCE_TO_TIME_RATIO)

if __name__ == '__main__':

count = 1

while True:

screenshot()

distance = calculate_jump_distance()

touch_time = distance2time(distance)

jump(touch_time)

print("#{}: distance={}, time={}".format(count, distance, touch_time))

count += 1

time.sleep(1)

116d9d8816734561041eaf13784119fb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值