python跳一跳编程构造_Python玩“跳一跳” iOS+Win 硬件实现
感謝來自?wangshub?的跳躍距離算法
目前已有的iOS跳一跳輔助需要macOS環境下的WebDriverAgentRunner。而現在介紹的方法在Windows環境下通過物理方法實現,不需要macOS也不需要越獄。
運行環境&工具
Python 3.6 in Windows
Python Pillow庫
局域網環境
iToools Airplayer
樹莓派 或 arduino (本文使用樹莓派)
SG90 舵機
杜邦線、紙板
一小塊海綿
橙子或其它多汁水果(可選)
基本思路
使用iOS自帶Airplay服務將游戲畫面投影到電腦上
使用Pillow庫截取電腦屏幕,獲得游戲畫面
分析圖片,計算出跳躍距離,乘以時間系數獲得按壓時間
將按壓時間發送至樹莓派,樹莓派控制舵機點擊手機屏幕
原理 & 步驟
舵機 & 控制器 部分
1.樹莓派(OS:Raspbian Jessie)連接上局域網,下載 servo_control.py到樹莓派;
2.拿一根杜邦線粘在舵機的擺臂上,并且固定好舵機。如圖:
3.取一小塊海綿,約10mm*10mm*5mm,不必太精確。海綿中間挖一個小洞。大概是這樣:?
4.海綿上滴水浸透,放在手機屏幕上“再來一次”的位置。杜邦線的另一頭插進橙子(觸發電容屏需要在屏幕上形成一個電場,我嘗試過連接干電池負極的方案,但是效果不理想,最后不得已拿了室友的一個橙子。當然一直捏著或者含著導線也是可以的)。
5.舵機連接上樹莓派,電源使用5v,舵機控制線接在GPIO18, 如圖
6.需要根據實際安裝位置調整舵機高點和低點位置servo_down = 3.8 servo_up = 5(范圍: 2.5~12.5)
7.最終效果
Windows 部分
下載Airplayer(免安裝,暫無捆綁)
配置Airplayer,畫質什么的統統調到最高。啟動iPhone上的Airplay,然后可以在電腦上到iPhone畫面,游戲運行時需要Airplayer全屏顯示。
安裝Pillow庫 本文使用Pillow庫的ImageGrab截屏
im = ImageGrab.grab((654, 0, 1264, 1080)) im.save('a.png', 'png')
其中(654, 0, 1264, 1080)是截屏的范圍,我的顯示器分辨率是1080p,截取屏幕中間的部分得到的圖片大小是610*1080,但這個時候圖片最左邊的一列的像素是黑色的。
4.下載wechat_jump_auto_iOS_Win.py,我的顯示器分辨率是1920*1080,手機是iPhone 7。如果使用不同的設備需要更改時間系數等參數。
5.由于Airplay傳輸畫面時會壓縮,獲取的游戲畫面會有顏色偏差。我修改了原算法的一些參數,增大了一些顏色上的寬容度,在我的測試中達到一個比較好的準確率。
運行
打開游戲畫面,Airplayer窗口全屏
樹莓派上運行servo_control.py
Windows運行wechat_jump_auto_iOS_Win.py
存在問題
由于是物理點擊屏幕,會產生一定的操作誤差。操作誤差由時間常數誤差、舵機運動時間、杜邦線觸點插進海綿的深度等等因素引起。而當前使用的算法在一種情況下會出現誤差疊加的問題。
舵機的擺動角度和時間系數沒有絕對的數值,需要慢慢嘗試,當前使用的時間系數是2.43。
總結
以上是生活随笔為你收集整理的python跳一跳编程构造_Python玩“跳一跳” iOS+Win 硬件实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识手机阅读行业
- 下一篇: 给移动硬盘装上LINUX全攻略,给移动硬