实现原理 通过 adb 工具,将游戏界面的截图 pull 到电脑上的指定目录中; 程序检索截图中的指定区域内(大体是 height / 3 —— 2 * height / 3 这个区域内)的像素点,通过遍历这些像素点的颜色信息来确定起止点; 终点计算方法,引用了 python 微信《跳一跳》辅助 的相关计算方法。 获取起止点坐标后,计算两点间距离 l ;再使用 l * 时间系数 x 得到触屏时间; 使用 adb 工具,执行屏幕点击操作,完成棋子跳跃过程。 Requirements: 电脑安装了 ADB 驱动; 电脑安装了 php-cli 及 php-gd 扩展 安卓手机,并启用了开发者模式(关闭类似 锤子手机 大爆炸 的功能) RUN 手机打开微信 跳一跳 游戏界面 手机连接电脑,然后运行如下命令 cd path/to/code php main.php 其他 如果需要启用调试功能,请将 define('DEBUG', false); 中的 false 改为 true。 程序会将每一步计算出的点的位置标记到截图中,并保存到 debug 目录下。 define('TRAINING', false); 为训练表示,将其设置为 true 后,程序会使用 training-data 目录中的截图进行训练测试。 该操作不会进行截屏及跳跃操作。 仍存在的问题 如果棋子中点超过了中线位置,那么在检索终点位置时,仍会从原棋子位置检索,进而导致获取终点坐标异常! 获取终点算法仍需进一步的优化。有一定几率会出现终点坐标异常的情况。