1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          python 跳一跳(怎么使用Python實現跳一跳自動跳躍功能)

          來源:互聯網轉載 時間:2024-04-28 17:05:12

          1. OpenCV:模板匹配。 獲得小跳棋中心位置

          2. OpenCV:邊緣檢測。 獲得下一方塊中心位置

          Python+ADB+OpenCv,實現「 跳一跳 」自動化。

          / 01 / ADB

          ADB工具即Android Debug Bridge(安卓調試橋) tools。

          ADB 是一個命令行窗口,用于通過電腦端與模擬器或者真實設備交互。

          與之前小F接觸過的Appium有點相似。

          ADB的安裝很簡單,就是將安裝包解壓后,將路徑添加到系統的環境變量中即可。

          然后使用Python的os模塊執行ADB命令。

          defget_screenshot():#截取手機的屏幕os.system('adbshell/system/bin/screencap-p/sdcard/screencap.png')#把模擬器里面的文件或文件夾傳到電腦上os.system('adbpull/sdcard/screencap.pngscreencap.png')defjump(distance):#設置按壓時間,系數為1.35press_time=int(distance*1.35)#生成隨機手機屏幕模擬觸摸點,防止成績無效#生成隨機整數(0-9),最終數值為(0-90)rand=random.randint(0,9)*10#adb長按操作,即在手機屏幕上((320-410),(410-500))坐標處長按press_time毫秒cmd=('adbshellinputswipe%i%i%i%i'+str(press_time))%(320+rand,410+rand,320+rand,410+rand)#輸出adb命令print(cmd)#執行adb命令os.system(cmd)

          本次涉及到的ADB命令,就只有三個,不多。

          一個截屏,一個推送手機截圖到電腦上,最后模擬長按手機屏幕。

          / 02 / 跳動實現

          先檢測游戲結束畫面。
          判斷是否需要結束游戲程序。

          #游戲結束的模板圖像temp_end=cv2.imread('end.jpg',0)defgame_over(img):"""模板匹配,檢測是否要將程序結束"""#如果在游戲截圖中匹配到帶"再玩一局"字樣的模板,則循環中止res_end=cv2.matchTemplate(img,temp_end,cv2.TM_CCOEFF_NORMED)ifcv2.minMaxLoc(res_end)[1]>0.95:print('Gameover!')returnTrue

          模板匹配原理圖如下。


          當返回的最大矩陣值大于0.95時,則認為原始圖像中肯定出現了再玩一局字樣。

          則游戲結束,程序也隨之結束。

          小跳棋的模板匹配代碼如下。

          主要是獲取小跳棋的位置,即「跳一跳」起點位置參數。

          #讀取小跳棋模板圖像temple=cv2.imread('temple.png',0)#獲取小跳棋模板圖像的高和寬th,tw=temple.shape[:2]defget_start(img):"""模板匹配,獲取跳一跳起點的位置參數(小跳棋)"""#使用標準相關系數匹配,1表示完美匹配,-1表示糟糕的匹配,0表示沒有任何相關性result=cv2.matchTemplate(img,temple,cv2.TM_CCOEFF_NORMED)#使用函數minMaxLoc,確定匹配結果矩陣的最大值和最小值(val),以及它們的位置(loc)min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(result)#得到小跳棋的中心位置參數returnmax_loc[0]+47,max_loc[1]+208

          得到結果如下。


          下面通過OpenCV的邊緣檢測獲取「跳一跳」的終點位置。

          defget_end(img):"""邊緣檢測,獲取跳一跳終點的位置參數(方塊)"""#高斯模糊img_rgb=cv2.GaussianBlur(img,(5,5),0)#邊緣檢測canny_img=cv2.Canny(img_rgb,1,10)#獲得邊緣檢測圖像的高和寬H,W=canny_img.shape#第一個頂點的高度y_top=np.nonzero([max(row)forrowincanny_img[400:]])[0][0]+400#第一個頂點的寬度x_top=int(np.mean(np.nonzero(canny_img[y_top])))#跳過小白圈,然后遍歷y_bottom=y_top+80forrowinrange(y_bottom,H):ifcanny_img[row,x_top]!=0:y_bottom=rowbreak#得到方塊的中心點x_center,y_center=x_top,(y_top+y_bottom)//2returnx_center,y_center

          邊緣檢測原理圖如下。


          最后便是主程序啦。

          #循環直到游戲失敗結束foriinrange(10000):#將安卓手機上的截圖移到電腦當前文件夾下get_screenshot()#讀取截圖圖像img=cv2.imread('screencap.png',0)#游戲結束ifgame_over(img):break#得到起點位置參數x_start,y_start=get_start(img)#獲取終點位置參數x_end,y_end=get_end(img)#將起點位置繪制出來,一個圓cv2.circle(img,(x_start,y_start),10,255,-1)#將終點位置繪制出來,一個圓img_end=cv2.circle(img,(x_end,y_end),10,255,-1)#保存圖片cv2.imwrite('end.png',img_end)#計算起點和終點的直線距離,勾三股四弦五distance=(x_start-x_end)**2+(y_start-y_end)**2distance=distance**0.5#根據獲得的距離來設置按壓時長jump(distance)time.sleep(1.3)

          下面就來看一下「跳一跳」自動跳躍的視頻。

          輕輕松松得分,毫無問題。

          / 03 / 總結

          相關工具及代碼已上傳網盤,公眾號回復 「跳一跳」 即可獲取。

          安裝好ADB工具,然后通過數據線將安卓手機和電腦連接。

          最后運行代碼, 親測有效。

          當然代碼還是有待優化的,如下圖~


          標簽:python 跳一跳-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          每股公積金什么意思?每股公積金便是公積金除股票總股票數。公積金是公司的“最終儲備”,它不僅僅是公司在將來擴大的物質基礎,也可以是公司股東將來轉送股票紅利的信心來源。有一種說法就是, 沒有公積金的上市公司,便是沒有希望的上市公司。上市公司每股公積金越高越好是不是是的。由于上市公司用于轉增股本的資產來源于資本公積金,因此,每股資本公積金在很大程度上反映了上市公司的股本擴張能力。...

          國美易卡是國美金融旗下的現金貸、分期、信用卡代還產品,之前名叫美易分,有很多人想在國美易卡提現,但是不知道到賬的時間,那么國美易卡提現成功多久到賬?國美易卡審核要多久?國美易卡申請條件,下面一起來看看吧。國美易卡在填寫完個人資料、完成認證后會給予一定的額度,分為提現額度、購物分期、信用卡代還,其中提現額度是可以提到銀行卡內的,如果發現提現額度為零,那么使用其他額度一段時間后就可以提現了。另外如果是...

          【資料圖】1、單押就是句子與句子之間,互相有相同或者相近的韻母,通過歌手不同的排列方式,讓整個段落呈現一種韻律感。比較簡單的就是 類似數來寶的方式,每句話的結尾都是相同的韻母,可以參考喊麥作品,押韻類似。2、對于不怎么聽說唱的人,可能不知道中國新說唱單押雙押是什么意思,在說唱中講究一句歌詞的末尾詞和下一句銜接的末尾詞押韻,這樣聽起來更有美感,通常押韻分為單押雙押三押。以上就是【不是吧不是吧難道單押...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>