python3實(shí)現(xiàn)跳一跳點(diǎn)擊跳躍
借鑒了網(wǎng)上一些大神的代碼和思路,這里整理一下寫出點(diǎn)擊跳躍玩跳一跳這個小游戲的思路
一、整體思路
棋子所在的坐標(biāo)以及下一步所要到的坐標(biāo),根據(jù)兩個坐標(biāo)計算出兩點(diǎn)之間距離進(jìn)行跳躍。
二、分布思路
1、根據(jù)命令截圖獲取初始圖保存到手機(jī),然后上傳到本地文件夾
2、將獲取的截圖放入新建的坐標(biāo)軸中(matplotlib)
3、通過鼠標(biāo)點(diǎn)擊事件獲取所在初始坐標(biāo)以及重點(diǎn)坐標(biāo),并計算出直線距離
4、進(jìn)行跳躍,跳躍完成后清空坐標(biāo)并更新截圖
三、所用到的相關(guān)技術(shù)或模塊
1、python3基礎(chǔ)
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
# 獲取手機(jī)截圖
def get_screen_image():
os.system('adb shell screencap -p /sdcard/screen.png') # 獲取手機(jī)當(dāng)前界面截圖
os.system('adb pull /sdcard/screen.png') # 下載當(dāng)前截圖到電腦當(dāng)前文件夾下
return numpy.array(PIL.Image.open('screen.png')) #轉(zhuǎn)為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))) # 按下橫縱左邊 放開橫縱坐標(biāo) 按壓時間 2K的屏幕彈跳系數(shù)為1
# 綁定鼠標(biāo)單擊事件
def on_calck(event, coor=[]): # [(x,y),(x2,y2)]
global need_update
coor.append((event.xdata, event.ydata)) # 獲取x和y坐標(biāo)位置放入coor數(shù)組中
if len(coor) == 2:
jump_to_next(coor.pop(), coor.pop()) # 獲取到兩個坐標(biāo)后計算長度并清空數(shù)組
need_update = True
def update_screen(frame): # 更新圖片
global need_update
if need_update:
time.sleep(1) # 因?yàn)樘S需要時間所以這里需要休眠1s,然后重新獲取圖片
axes_image.set_array(get_screen_image())
need_update = False
return axes_image, # 返回元祖
figure = plt.figure() # 創(chuàng)建一個空白的的圖片對象/創(chuàng)建畫布
axes_image = plt.imshow(get_screen_image(), animated=True) # 把獲取的圖片放進(jìn)坐標(biāo)軸
figure.canvas.mpl_connect('button_press_event', on_calck)
ani = FuncAnimation(figure, update_screen, interval=50, blit=True) # 實(shí)例化 FuncAnimation更新畫布圖片 50為50ms
plt.show() # 展示坐標(biāo)圖
請點(diǎn)擊這里獲?。?a target="_blank" >跳一跳源代碼
更多內(nèi)容大家可以參考專題《微信跳一跳》進(jìn)行學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)據(jù)分析Numpy庫的常用操作
numpy 是 Python 的一個科學(xué)計算的庫,提供了矩陣運(yùn)算的功能,其一般與 Scipy、matplotlib 一起使用,這篇文章總結(jié)下python數(shù)據(jù)分析Numpy庫的常用操作,感興趣的朋友一起看看吧2022-01-01
Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法
今天小編就為大家分享一篇Python小工具之消耗系統(tǒng)指定大小內(nèi)存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python利用pyecharts實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼
Pyecharts是一個用于生成 Echarts 圖表的 Python 庫,Echarts 是一個由百度開源的數(shù)據(jù)可視化工具,它提供的圖表種類豐富,交互性強(qiáng),兼容性好,非常適合用于數(shù)據(jù)分析結(jié)果的展示,本文將給大家介紹Python利用pyecharts實(shí)現(xiàn)數(shù)據(jù)可視化,需要的朋友可以參考下2024-09-09
使用python讀取csv文件快速插入數(shù)據(jù)庫的實(shí)例
今天小編就為大家分享一篇使用python讀取csv文件快速插入數(shù)據(jù)庫的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python庫pycryptodom加密技術(shù)探索(公鑰加密私鑰加密)
這篇文章主要為大家介紹了python庫pycryptodom加密技術(shù)探索(公鑰加密私鑰加密),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Pycharm無法打開雙擊沒反應(yīng)的問題及解決方案
這篇文章主要介紹了Pycharm無法打開,雙擊沒反應(yīng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

