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 19 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 Python
python清理子进程机制剖析
Nov 23 Python
python操作列表的函数使用代码详解
Dec 28 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
Python正则表达式学习小例子
Mar 03 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过程中的一些注意点的总结
2013/10/25 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
原生JS下拉加载插件分享
2016/12/26 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
车间核算员岗位职责
2014/07/01 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript