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中logging模块的用法实例
Sep 29 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
Python实现图片拼接的代码
Jul 02 Python
python 调用钉钉机器人的方法
Feb 20 Python
python实现从ftp服务器下载文件
Mar 03 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
python实现扫雷游戏的示例
Oct 20 Python
Opencv实现二维直方图的计算及绘制
Jul 21 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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执行普通shell命令流程解析
2020/08/24 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
python魔法方法-自定义序列详解
2016/07/21 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
python用Configobj模块读取配置文件
2020/09/26 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
优秀老员工获奖感言
2014/02/15 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
法律意见书范文
2015/05/20 职场文书
开学典礼观后感
2015/06/15 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python