python进阶之微信跳一跳外挂

开发日志:

开发流程:开始运行-->配置手机和电脑(连接,截屏等功能)-->截图-->分析棋子棋盘的坐标-->计算棋子棋盘的距离-->执行按压手机屏幕跳跃的功能-->等待1~2秒-->返回“截图”重复执行
外挂适应不目前市场上绝大多数的安卓手机,不适用IOS系统手机,主流支持的分辨率为1280*720,1920*1280,2560*1440。
WeChatJump(v1.0)开发日志:
(针对终端手机分辨率为720*1280)
        运行调试:
第一次整体运行:出现没有安装ADB的提示,但是确实已经安装了,换用命令行之后该问题以正常运行。
第二次整体运行:接收输入的字符串有问题。

        参数调试:
第一次参数调试:按压系数"press_ratio"为2.180,当前参数下圆形跳座基本基本不行,方形跳座跳出去的概率极大,主要原因一方面是跳跃参数过大,另一方面是跳跃时不是对着屏幕最上角的方向跳,导致计算时,不能很好控制跳得大小,但是理论上这种情况是不存在的,程序计算的距离是下一个跳座中心点到跳棋中心点的距离。可能是计算跳座中心点的时候出了问题吧。
第二次参数调试:按压系数"press_ratio"为2.0参数设置为情况依旧。
第三次参数调试:按压系数"press_ratio"为1.800情况逆转,出现相反的情况。
第四次参数调试:按压系数"press_ratio"为1.950,往左上方跳得时候容易超出跳跃范围,但是不尽然,也存在跳不到中心点的情况,往右上角跳得时候基本是跳不到中心店或者是正好在中心点这两种情况,,目前设置的参数是1.950,最高分为306,但是当出现药瓶这种情况时,跳不上的概率相当大,其他的圆形跳座跳不到中心点的概率相对小一点,但比方形要大,下一步打算设置成1.951~1.953
第五次参数调试:设置跳跃系数为1.952,由于时间有点紧张,测试两次,以上效果改善程度不大,最高分均未超过1.950.目前来看跳跃系数是1.950最为合适。

程序主程序部分源码:

def run():
    """主要函数,完成程序的主要任务"""
    open_game = input('请确保手机打开了 ADB 并连接了电脑,然后打开跳一跳并【开始游戏】后再用本程序,确定开始?y/n>>:')
    # if (open_game != 'y')or(open_game != 'Y'):
    #    exit('退出!')
    # 初始化:
    config = init()
    #检查截图方式:
    check_screenshot()
    print('通过第%s种方式获取截图'%SCREENSHOT_WAY)
    while True:
        #截图autojump.png
        get_screenShot()
        #读取截取的图片
        img = Image.open('autojump.png')
        piece_x,piece_y,board_x,board_y = find_piece_and_board(img,config)
        #计算棋子棋盘的距离
        ntime = time.time()
        print(piece_x,piece_y,board_x,board_y,'------->')
        distance = math.sqrt((piece_x - board_x)**2 + (piece_y - board_y)**2)
        #生成一个随机按压点,防止被Ban
        if DEBUG:
            debug.save_debug_screenshot(ntime,img,piece_x,piece_y,board_x,board_y)
            debug.backup_screenshot(ntime)
        press_point = (random.randint(*config['swipe']['x']),
                           random.randint(*config['swipe']['y']))
        #跳跃
        jump(distance,press_point,config['press_ratio'])
        #休息,停留(注意应该理论上是可以休息1~2秒的挣个连续区间,而不是离散区间)
        time.sleep(random.randrange(1,3))

时间仓促,暂不作分析。。。。。后续更新。。。

工具介绍:

adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在 Eclipse中方便通过DDMS来调试Android程序,说白了就是 debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
adb是 android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机).  它的主要功能有:
* 运行设备的shell(命令行)
* 管理模拟器或设备的端口映射
* 计算机和设备之间上传/下载文件
* 将本地apk软件安装至 模拟器或android设备
ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

你可能感兴趣的:(python)