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脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Python异常处理操作实例详解
May 10 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
Python跳出多重循环的方法示例
Jul 03 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
基于Python获取城市近7天天气预报
Nov 26 Python
Python发送邮件实现基础解析
Aug 14 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
关于文本留言本的分页代码
2006/10/09 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
深入php内核之php in array
2015/11/10 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
Python实现备份文件实例
2014/09/16 Python
Python实现KNN邻近算法
2021/01/28 Python
Python中装饰器学习总结
2018/02/10 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
python wsgiref源码解析
2021/02/06 Python
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
学生周末回家住宿长期请假条
2014/02/15 职场文书
武侯祠导游词
2015/02/04 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
教师见习总结范文
2015/06/23 职场文书
物业管理交接协议书
2016/03/24 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS