中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Python玩“跳一跳” iOS+Win 硬件實(shí)現(xiàn)

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

感謝來(lái)自 wangshub 的跳躍距離算法

原項(xiàng)目地址:wangshub/wechat_jump_game

知乎專欄:教你用Python來(lái)玩微信跳一跳

本項(xiàng)目知乎專欄:python玩“跳一跳” iOS+Win版

目前已有的iOS跳一跳輔助需要macOS環(huán)境下的WebDriverAgentRunner。而現(xiàn)在介紹的方法在Windows環(huán)境下通過(guò)物理方法實(shí)現(xiàn),不需要macOS也不需要越獄。

運(yùn)行環(huán)境&工具

  • Python 3.6 in Windows
  • Python Pillow庫(kù)
  • 局域網(wǎng)環(huán)境
  • iToools Airplayer
  • 樹(shù)莓派 或 arduino (本文使用樹(shù)莓派)
  • SG90 舵機(jī)
  • 杜邦線、紙板
  • 一小塊海綿
  • 橙子或其它多汁水果(可選)

基本思路

  1. 使用iOS自帶Airplay服務(wù)將游戲畫(huà)面投影到電腦上

  2. 使用Pillow庫(kù)截取電腦屏幕,獲得游戲畫(huà)面

  3. 分析圖片,計(jì)算出跳躍距離,乘以時(shí)間系數(shù)獲得按壓時(shí)間

  4. 將按壓時(shí)間發(fā)送至樹(shù)莓派,樹(shù)莓派控制舵機(jī)點(diǎn)擊手機(jī)屏幕

原理 & 步驟

舵機(jī) & 控制器 部分

1.樹(shù)莓派(OS:Raspbian Jessie)連接上局域網(wǎng),下載 servo_control.py到樹(shù)莓派;

2.拿一根杜邦線粘在舵機(jī)的擺臂上,并且固定好舵機(jī)。如圖:

3.取一小塊海綿,約10mm*10mm*5mm,不必太精確。海綿中間挖一個(gè)小洞。大概是這樣: 

4.海綿上滴水浸透,放在手機(jī)屏幕上“再來(lái)一次”的位置。杜邦線的另一頭插進(jìn)橙子(觸發(fā)電容屏需要在屏幕上形成一個(gè)電場(chǎng),我嘗試過(guò)連接干電池負(fù)極的方案,但是效果不理想,最后不得已拿了室友的一個(gè)橙子。當(dāng)然一直捏著或者含著導(dǎo)線也是可以的)。

5.舵機(jī)連接上樹(shù)莓派,電源使用5v,舵機(jī)控制線接在GPIO18, 如圖

6.需要根據(jù)實(shí)際安裝位置調(diào)整舵機(jī)高點(diǎn)和低點(diǎn)位置servo_down = 3.8 servo_up = 5(范圍: 2.5~12.5)

7.最終效果

 

Windows 部分

  1. 下載Airplayer(免安裝,暫無(wú)捆綁)

  2. 配置Airplayer,畫(huà)質(zhì)什么的統(tǒng)統(tǒng)調(diào)到最高。啟動(dòng)iPhone上的Airplay,然后可以在電腦上到iPhone畫(huà)面,游戲運(yùn)行時(shí)需要Airplayer全屏顯示。

  3. 安裝Pillow庫(kù) 本文使用Pillow庫(kù)的ImageGrab截屏

    im = ImageGrab.grab((654, 0, 1264, 1080)) im.save('a.png', 'png')

    其中(654, 0, 1264, 1080)是截屏的范圍,我的顯示器分辨率是1080p,截取屏幕中間的部分得到的圖片大小是610*1080,但這個(gè)時(shí)候圖片最左邊的一列的像素是黑色的。

4.下載wechat_jump_auto_iOS_Win.py,我的顯示器分辨率是1920*1080,手機(jī)是iPhone 7。如果使用不同的設(shè)備需要更改時(shí)間系數(shù)等參數(shù)。

5.由于Airplay傳輸畫(huà)面時(shí)會(huì)壓縮,獲取的游戲畫(huà)面會(huì)有顏色偏差。我修改了原算法的一些參數(shù),增大了一些顏色上的寬容度,在我的測(cè)試中達(dá)到一個(gè)比較好的準(zhǔn)確率。

運(yùn)行

  1. 打開(kāi)游戲畫(huà)面,Airplayer窗口全屏

  2. 樹(shù)莓派上運(yùn)行servo_control.py

  3. Windows運(yùn)行wechat_jump_auto_iOS_Win.py

存在問(wèn)題

  • 由于是物理點(diǎn)擊屏幕,會(huì)產(chǎn)生一定的操作誤差。操作誤差由時(shí)間常數(shù)誤差、舵機(jī)運(yùn)動(dòng)時(shí)間、杜邦線觸點(diǎn)插進(jìn)海綿的深度等等因素引起。而當(dāng)前使用的算法在一種情況下會(huì)出現(xiàn)誤差疊加的問(wèn)題。

  • 舵機(jī)的擺動(dòng)角度和時(shí)間系數(shù)沒(méi)有絕對(duì)的數(shù)值,需要慢慢嘗試,當(dāng)前使用的時(shí)間系數(shù)是2.43。

 

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:管理 Node.js 進(jìn)程從未如此優(yōu)雅

下一篇:Python實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)常見(jiàn)算法