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使用新浪微博API发送微博的例子
Apr 10 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Python微信库:itchat的用法详解
Aug 14 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python中turtle库的使用实例
Sep 09 Python
Python sys模块常用方法解析
Feb 20 Python
Python递归调用实现数字累加的代码
Feb 25 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
php字符串分割函数用法实例
2015/03/17 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
python不带重复的全排列代码
2013/08/13 Python
windows系统下Python环境搭建教程
2017/03/28 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python利用7z批量解压rar的实现
2019/08/07 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python中round函数如何使用
2020/06/19 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
《狮子和兔子》教学反思
2014/03/02 职场文书
毕业生见习报告总结
2014/11/08 职场文书
教师培训学习心得体会
2016/01/21 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
导游词书写之黄山
2019/08/06 职场文书