微信跳一跳小游戏脚本分数控制

2018-01-23  本文已影响45人  CAICAI0

故事

微信出了跳一跳小游戏后没有多久就玩了一下,感觉很难(可能是运动太少)。没过多久网上就出了自动脚本。下载后,简单修改运行,最高调到了七千多分。然后,微信把我的成绩给删了。我猜应该是数据离群太明显造成的。这样一来就产生了一个需求--控制分数。

脚本

def match(src, template): #判断两张图片的最大相似度  src带判断的图片  template模板
    image_matched = cv2.matchTemplate(src,template,cv2.TM_CCOEFF_NORMED) #模板匹配
    minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(image_matched) #获取匹配结果
    return maxVal #最大值

def readNumber(): #读取分数
    im = cv2.imread("./1.png") #“1.png”为屏幕截图 原来的程序就有
    h,w,c = im.shape
    numberImage = im[236:236+94,144:w] #图片截取有数字的部分
    grayImage = cv2.cvtColor(numberImage,cv2.COLOR_BGR2GRAY) #灰度处理
    retVal,image = cv2.threshold(grayImage,85,255,cv2.THRESH_BINARY) # 二值处理

    number = 0
    for i in range(0,9):
        oneBit = image[0:94,(i*92):(i*92+74)] #截取一位数字
        index = 0
        same = 0
        for j in range(0,9) :
            res = match(oneBit,templates[j]) #从0-9数字字模中对比相似度 并找到最大的
            if res > same :
                same = res
                index = j
        if same < 0.5 : #如果最大相似度小于0.5  就没有匹配数字了
            break
        else:
            number = number*10+index #进位后相加
    return number

这两个函数主要解决了分数读取的问题。整个代码逻辑的基础是跳一跳小游戏使用了 04B_03B 这个字体 每个字的大小都是一样的。通过固定的位置就可以准确获取单个文字。opencv2 提供的图片对比计算速度还可以。
具体分数控制,就因人而异了。代码源:https://github.com/caicai0/wechat_jump_game

上一篇下一篇

猜你喜欢

热点阅读