python3实现跳一跳点击跳跃
借鉴了网上一些大神的代码和思路,这里整理一下写出点击跳跃玩跳一跳这个小游戏的思路
一、整体思路
棋子所在的坐标以及下一步所要到的坐标,根据两个坐标计算出两点之间距离进行跳跃。
二、分布思路
1、根据命令截图获取初始图保存到手机,然后上传到本地文件夹
2、将获取的截图放入新建的坐标轴中(matplotlib)
3、通过鼠标点击事件获取所在初始坐标以及重点坐标,并计算出直线距离
4、进行跳跃,跳跃完成后清空坐标并更新截图
三、所用到的相关技术或模块
1、python3基础
2、numpy
3、matplotlib
4、python中的os模块
5、adb工具包
四、代码
__author__='周雁冰'
importos
importPIL,numpy
importmatplotlib.pyplotasplt
frommatplotlib.animationimportFuncAnimation
importtime
need_update=True
#获取手机截图
defget_screen_image():
os.system('adbshellscreencap-p/sdcard/screen.png')#获取手机当前界面截图
os.system('adbpull/sdcard/screen.png')#下载当前截图到电脑当前文件夹下
returnnumpy.array(PIL.Image.open('screen.png'))#转为array返回
#计算弦的长度
defjump_to_next(point1,point2):
x1,y1=point1;x2,y2=point2
distance=((x2-x1)**2+(y2-y1)**2)**0.5#计算弦长度
os.system('adbshellinputswipe320410320410{}'.format(int(distance*1)))#按下横纵左边放开横纵坐标按压时间2K的屏幕弹跳系数为1
#绑定鼠标单击事件
defon_calck(event,coor=[]):#[(x,y),(x2,y2)]
globalneed_update
coor.append((event.xdata,event.ydata))#获取x和y坐标位置放入coor数组中
iflen(coor)==2:
jump_to_next(coor.pop(),coor.pop())#获取到两个坐标后计算长度并清空数组
need_update=True
defupdate_screen(frame):#更新图片
globalneed_update
ifneed_update:
time.sleep(1)#因为跳跃需要时间所以这里需要休眠1s,然后重新获取图片
axes_image.set_array(get_screen_image())
need_update=False
returnaxes_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()#展示坐标图
请点击这里获取:跳一跳源代码
更多内容大家可以参考专题《微信跳一跳》进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。