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 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python集合常见运算案例解析
Oct 17 Python
python微信公众号开发简单流程实现
Mar 09 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
python实点云分割k-means(sklearn)详解
May 28 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
python中的对数log函数表示及用法
Dec 09 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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 Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php 定界符格式引起的错误
2011/05/24 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
layui table 参数设置方法
2018/08/14 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
学习python处理python编码问题
2011/03/13 Python
python中global用法实例分析
2015/04/30 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
C#笔试题集合
2013/06/21 面试题
院药学专业个人求职信
2013/09/21 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书