python3实现跳一跳点击跳跃


Posted in Python onJanuary 08, 2018

借鉴了网上一些大神的代码和思路,这里整理一下写出点击跳跃玩跳一跳这个小游戏的思路

一、整体思路

棋子所在的坐标以及下一步所要到的坐标,根据两个坐标计算出两点之间距离进行跳跃。

二、分布思路

1、根据命令截图获取初始图保存到手机,然后上传到本地文件夹

2、将获取的截图放入新建的坐标轴中(matplotlib)

3、通过鼠标点击事件获取所在初始坐标以及重点坐标,并计算出直线距离

4、进行跳跃,跳跃完成后清空坐标并更新截图

三、所用到的相关技术或模块

1、python3基础

2、numpy

3、matplotlib

4、python中的os模块

5、adb工具包

四、代码

__author__ = '周雁冰'
import os
import PIL,numpy
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import time


need_update = True

# 获取手机截图
def get_screen_image():
 os.system('adb shell screencap -p /sdcard/screen.png') # 获取手机当前界面截图
 os.system('adb pull /sdcard/screen.png') # 下载当前截图到电脑当前文件夹下
 return numpy.array(PIL.Image.open('screen.png')) #转为array返回


# 计算弦的长度
def jump_to_next(point1, point2):
 x1, y1 = point1; x2, y2 = point2
 distance = ((x2-x1)**2 + (y2-y1)**2)**0.5 # 计算弦长度
 os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1))) # 按下横纵左边 放开横纵坐标 按压时间 2K的屏幕弹跳系数为1


# 绑定鼠标单击事件
def on_calck(event, coor=[]): # [(x,y),(x2,y2)]
 global need_update
 coor.append((event.xdata, event.ydata)) # 获取x和y坐标位置放入coor数组中
 if len(coor) == 2:
 jump_to_next(coor.pop(), coor.pop()) # 获取到两个坐标后计算长度并清空数组
 need_update = True 


def update_screen(frame): # 更新图片
 global need_update
 if need_update:
 time.sleep(1) # 因为跳跃需要时间所以这里需要休眠1s,然后重新获取图片
 axes_image.set_array(get_screen_image())
 need_update = False
 return axes_image, # 返回元祖


figure = plt.figure() # 创建一个空白的的图片对象/创建画布
axes_image = plt.imshow(get_screen_image(), animated=True) # 把获取的图片放进坐标轴
figure.canvas.mpl_connect('button_press_event', on_calck)
ani = FuncAnimation(figure, update_screen, interval=50, blit=True) # 实例化 FuncAnimation更新画布图片 50为50ms
plt.show() # 展示坐标图

请点击这里获取:跳一跳源代码

更多内容大家可以参考专题《微信跳一跳》进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
Saltstack快速入门简单汇总
Mar 01 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
如何利用python查找电脑文件
Apr 27 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python实现动态创建类的方法分析
Jun 25 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 #Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 #Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 #Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 #Python
用python实现的线程池实例代码
Jan 06 #Python
pip matplotlib报错equired packages can not be built解决
Jan 06 #Python
Python实现的朴素贝叶斯分类器示例
Jan 06 #Python
You might like
社区(php&&mysql)二
2006/10/09 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
把pandas转换int型为str型的方法
2019/01/29 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python 线程的五个状态
2020/09/22 Python
Python request post上传文件常见要点
2020/11/20 Python
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
后勤副校长自我鉴定
2013/10/13 职场文书
集体备课反思
2014/02/12 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
业务员简历自我评价
2014/03/06 职场文书
大学开学计划书
2014/04/30 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL