微信跳一跳游戏是一款趣味性很高的小程序,很多人都对其颇为着迷,而我们今天要介绍的是,如何使用Python脚本在跳一跳游戏中刷高分。
微信跳一跳游戏的规则很简单,点击小人使其跳跃,跳跃的高度决定于点击屏幕的时间长短,而跳到不同的物块上可以得到不同的分数,游戏的目标就是得到尽可能高的分数。
而我们使用Python脚本来实现跳一跳游戏的刷分,原理也十分简单:通过截屏来识别小人和物块的位置,计算出小人需要跳跃的距离,然后通过ADB命令来模拟屏幕点击,从而让小人跳到目标物块上。
具体实现的步骤如下:
其中,上述第4步中使用的Python代码示例:
import os
import time
import numpy as np
from PIL import Image
import cv2
def jump(distance):
"""
跳跃一定的距离
"""
press_time = distance * 1.35
press_time = max(press_time, 200) # 设置 200ms 是最小的按压时间
press_time = int(press_time)
cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time)
os.system(cmd)
while True:
# 首先截取手机屏幕截图
os.system('adb shell screencap -p /sdcard/autojump.png')
os.system('adb pull /sdcard/autojump.png .')
# 加载图片
im = cv2.imread('autojump.png')
# 寻找小人,筛选出红色
red_lower = np.array([165, 0, 0])
red_upper = np.array([255, 80, 80])
red_mask = cv2.inRange(im, red_lower, red_upper)
red_mask = cv2.erode(red_mask, None, iterations=2)
red_mask = cv2.dilate(red_mask, None, iterations=2)
# 计算小人的位置
cnts = cv2.findContours(red_mask.copy(),
cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)[-2]
if len(cnts) > 0:
c = max(cnts, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(c)
cv2.circle(im, (int(x), int(y)), int(radius), (0, 0, 255), 2)
# 寻找下一块物块,筛选出绿色
green_lower = np.array([50, 90, 50])
green_upper = np.array([100, 180, 100])
green_mask = cv2.inRange(im, green_lower, green_upper)
green_mask = cv2.erode(green_mask, None, iterations=2)
green_mask = cv2.dilate(green_mask, None, iterations=2)
# 计算物块的位置
cnts = cv2.findContours(green_mask.copy(),
cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)[-2]
if len(cnts) > 0:
c = max(cnts, key=cv2.contourArea)
((x, y), radius) = cv2.minEnclosingCircle(c)
cv2.circle(im, (int(x), int(y)), int(radius), (0, 255, 0), 2)
# 计算小人到物块的距离
distance = round(np.sqrt((x - cx) ** 2 + (y - cy) ** 2))
# 执行跳跃
jump(distance)
# 显示截图
cv2.imshow('screen', im)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
这段代码中包含了截取手机屏幕截图、寻找小人和物块的位置、计算跳跃距离、执行跳跃的相关代码。
如上述攻略所述,我们使用Python脚本可以轻松刷取微信跳一跳小程序的高分,不过需要注意的是,过度刷分可能会导致账号被封禁等风险,因此应该根据自己的实际情况和需求,谨慎使用此方法。
本文链接:http://task.lmcjl.com/news/15096.html