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 26 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
Python按钮的响应事件详解
Mar 04 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
Python PIL库图片灰化处理
Apr 07 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
python request 模块详细介绍
Nov 10 Python
Python 实现二叉查找树的示例代码
Dec 21 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 Class 文章
2007/04/04 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JavaScript中this详解
2015/09/01 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue2.0 路由模式mode="history"的作用
2018/10/18 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
劳资员岗位职责
2013/11/11 职场文书
高中生自我评语大全
2014/01/19 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
经营管理策划方案
2014/05/22 职场文书
焦点访谈观后感
2015/06/11 职场文书
换届选举主持词
2015/07/03 职场文书
导游词之峨眉山
2019/12/16 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
vue中div禁止点击事件的实现
2022/04/02 Vue.js
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript