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读取安卓手机的屏幕分辨率方法
Mar 31 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
Python正则表达式急速入门(小结)
Dec 16 Python
Python实现括号匹配方法详解
Feb 10 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
Python unittest框架操作实例解析
Apr 13 Python
Python openpyxl 插入折线图实例
Apr 17 Python
Python如何读写CSV文件
Aug 13 Python
Python常用GUI框架原理解析汇总
Dec 07 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
解决中英文字符串长度问题函数
2007/01/16 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
Javascript this 的一些学习总结
2012/08/31 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
用Python一键搭建Http服务器的方法
2018/06/01 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
迟到检讨书大全
2014/01/25 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
学术会议主持词
2014/03/17 职场文书
学生安全承诺书
2014/05/22 职场文书
员工开除通知书
2015/04/25 职场文书
田径运动会通讯稿
2015/07/18 职场文书
推广普通话主题班会
2015/08/17 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers