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中查看变量内存地址的方法
May 05 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
容易被忽略的Python内置类型
Sep 03 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 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
第一节--面向对象编程
2006/11/16 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Vuex 入门教程
2018/01/10 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python中的lambda表达式用法详解
2016/06/22 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python算术运算符实例详解
2017/05/31 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
CSS3 简写animation
2012/05/10 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
2014年学校德育工作总结
2014/12/05 职场文书
幼儿园辞职信
2015/05/13 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
python 下划线的多种应用场景总结
2021/05/12 Python
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL