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中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
解决Django no such table: django_session的问题
Apr 07 Python
python os模块常用的29种方法使用详解
Jun 02 Python
python中关于数据类型的学习笔记
Jul 19 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通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
详解PHP数组赋值方法
2015/11/07 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
JavaScript中的其他对象
2008/01/16 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
vue-cli入门之项目结构分析
2017/04/20 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
英文简历自荐信范文
2013/12/11 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
学习党章心得体会2016
2016/01/15 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
SQL写法--行行比较
2021/08/23 SQL Server