zoukankan      html  css  js  c++  java
  • 微信跳一跳第二天

    1. 寻找关键坐标——起跳坐标

    算法策略:获取小人的底座中心点的值作为起跳点。

    1 获取小人的所有像素点中y坐标的最大值

    2 在小人y坐标的最大值那些像素点中,计算出x的平均值,作为小人底座的x的值。

    3 y坐标的最大值减去一个偏移值,就作为小人底座的y值。(注意:该偏移值不同的设备是不同的,同一台设备不同场景下是一样的)

    比如教师机的设备中最低点的值是(337,1131),中心值是 (337,1113),从而计算出偏移值为1131-1113=18

     

    2. 寻找目标坐标

    获取目标坐标的y值

    取屏幕宽和高的一半(x=540和y=960)

     

    我们会发现,目标格子的边沿(x=563,y=978)和这个是差不多的(y的偏差是18,x的偏差是23.

    以后每次跳动的时候,假如已经知道目标格子的边沿,和目标坐标的x值,就可以很轻松计算出目标坐标的y值。

    注意:每个格子的宽和高的比例是相同的。

    左:(563,847)

    右:(1015,847)

    上:(788,720)

    下:(788,978)

    中:(788,847)

    高和宽的比例:(978-720)/(1015-563) =258/452。假设该值为p

     

    已经知道目标坐标的x值,求目标坐标的y值

     

    3. 控制屏幕进行跳动

    operation.py

        # 控制屏幕进行跳动

        def jump(self, src, dst, press_time):

            press_time = int(press_time)

            cmd = "adb shell input swipe %d %d %d %d %d" % (

                int(src[0]), int(src[1]),

                int(dst[0]), int(dst[1]),

                press_time

            )

            print(cmd)

            os.system(cmd)

    main.py

    def test_jump():

        algorithm = Algorithm()

        op = Operation()

        im = op.screen_cap()

        start_x, start_y, end_x, end_y = algorithm.find_point(im)

        start_point = (start_x, start_y)

        end_point = (end_x, end_y)   

        distance = algorithm.euclidean_distance(start_point, end_point)

        press_time = algorithm.distance_to_time(distance)

        op.jump(start_point, end_point, press_time)

     

  • 相关阅读:
    热烈祝贺《名博是怎样炼成的》出版
    公司年会在民俗文化村举行
    春节后第一周个人新闻两则
    用asp.net来回收IIS6.0应用程序池
    ComponentArt Web.UI 升级遇到的问题
    今天给博客设计了个博皮
    2009春运购火车票经历
    Android平台下实现一个进程管理器
    【转】Windows平台下Android源码的下载
    【转】 使用git 工具下载android.jar Source Code
  • 原文地址:https://www.cnblogs.com/sjzsjzsjz/p/9245509.html
Copyright © 2011-2022 走看看