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求素数示例分享
Feb 16 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
解决Mac下使用python的坑
Aug 13 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
pip install命令安装扩展库整理
Mar 02 Python
详细介绍python操作RabbitMq
Apr 12 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php在线打包程序源码
2008/07/27 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
python实现大文件分割与合并
2019/07/22 Python
Python交互式图形编程的实现
2019/07/25 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
升职自荐信范文
2013/10/05 职场文书
党员承诺书内容
2014/03/26 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
员工自我评价范文
2015/03/11 职场文书
红楼梦读书笔记
2015/06/25 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js