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多线程ctrl+c退出问题解决方案
Oct 23 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
Python通过poll实现异步IO的方法
Jun 04 Python
Python脚本实现自动发带图的微博
Apr 27 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
用Python实现读写锁的示例代码
Nov 05 Python
python版大富翁源代码分享
Nov 19 Python
详解python数据结构和算法
Apr 18 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
redis数据库及与python交互用法简单示例
Nov 01 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
详解Python 3.10 中的新功能和变化
Apr 28 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
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
windows下安装python paramiko模块的代码
2013/02/10 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
python使用fork实现守护进程的方法
2017/11/16 Python
mac系统安装Python3初体验
2018/01/02 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Django返回HTML文件的实现方法
2020/09/17 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
行政管理专业推荐信
2013/11/02 职场文书
晚会邀请函范文
2014/01/24 职场文书
期中考试反思800字
2014/05/01 职场文书
团队拓展活动方案
2014/08/28 职场文书
免职通知
2015/04/23 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏