微信更新的 6.6.1 版本突然也開放了小游戲,微信啟動頁面還重點推薦了小游戲「跳一跳」。
跳一跳
玩家需要「按住」屏幕選定跳躍力度,按住時間越長,小人會跳得越遠。而且,每個跳板間的間距并非是固定的。這使得這款游戲成為「看上去簡單,精通卻很難」。
在這里還是要推薦下我自己建的Python開發學習群:628979297,群里都是學Python開發的,如果你正在學習Python ,小編歡迎你加入,今天分享的這個案例已經上傳到群文件,大家都是軟件開發黨,不定期分享干貨(只有Python軟件開發相關的),包括我自己整理的一份2018最新的Python進階資料和高級開發教程,歡迎進階中和進想深入Python的小伙伴
個人排行榜
而且提供排行榜功能,看著排行榜的排名,你是不是有扎心的“煩躁”感……
然而這個世界永遠不缺少腦洞大開的人,有人竟然用Python寫了個腳本,而且獲得了3500多分。
排行榜
恰恰剛開始學習Python,基礎知識剛學完,本著研究的目的,今天下載看看到底Python是如何造就這份神奇~
根據作者描述:
利用的工具:Python 2.7、Adb 驅動、Matplot繪圖庫。(注:經測試Python3.6也可以正常運行)
另外從程序中好像是用的 PIL標準圖像庫,沒有用Matplot,不知是不是一個庫,回頭再研究。
from PIL import Image, ImageDraw
運行原理:
1.將手機點擊到《跳一跳》小程序界面;
2.用Adb 工具獲取當前手機截圖,并用adb將截圖pull上來。
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png .
3.用matplot顯示截圖;
4.用鼠標點擊起始點和目標位置,計算像素距離;
5.根據像素距離,計算按壓時間;
6.用Adb工具點擊屏幕蓄力一跳;
adb shell input swipe x y x y time
下面來根據前面學習的基礎知識分析一下代碼,main部分有一個while循環,只要你不終止它一直重復操作。
Main部分代碼
里面主要調用的自定義函數主要有三個,還有一個time.sleep是為了延遲一下:
pull_screenshot() #獲取圖像
find_piece_and_board(im) #根據圖像獲取兩個點的坐標值
jump(math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2))#根據兩點距離和手機像素計算按壓時間并JUMP
1.pull_screenshot()函數主要是利用adb來獲取圖像。這里順便說一下“adb”,adb是連接Android手機與PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作,借助adb工具,我們可以管理設備,還可以進行如安裝軟件、系統升級、運行shell命令等等操作。如“pull”就是獲取設備中的文件,想更多了解ADB請自行學習~
pull_screenshot()
2.find_piece_and_board(),根據圖像獲取當前小人位置和落點的坐標系(piece_x, piece_y, board_x, board_y),這個是這個腳本中的核心部分。
find_piece_and_board(im)
3. jump根據設定的“長按的時間系數”計算需要的按壓時間,其實這個系數應該根據手機分辨率推出來的,按壓時間設定不小于200ms,核心命令是adb的“input swipe”。“input swipe”模擬的是手指在屏幕上的滑動事件,如果兩個點坐標不變化就成了長按了。
代碼中四個變量的設置是:“swipe_x1, swipe_y1, swipe_x2, swipe_y2 = 320, 410, 320, 410”,所以是模擬的長按,其實滑動也是可以的,后面給大家分享一個闖關技巧。
jump
實際應用(安卓手機):
1.首先請將手機的usb調試模式打開,設置》更多設置》開發者選項》USB調試,如果出現運行腳本后小人不跳的情況,請檢查是否有打開“USB調試(安全模式)”,記得順便打開USB模擬點擊。
2.安裝ADB驅動和ADB。
如果你系統是WIn10或Win8可能需要先設置一下“禁用強制驅動程序簽名”。
禁用驅動程序強制簽名
不然會出現下面的“文件的哈希值不在指定目錄中”安裝不上adb驅動的問題,網上有教程請自行學習。
哈希值驅動不能安裝問題
3.設置adb路徑到系統默認路徑,或者直接將下載的腳本放置到adb文件件下,為了便于運行我把下載的腳本名改為了“jump.py”。
4.進入CMD模式,運行“python jump.py”(需要進入保存腳本的目錄)
運行時輸出結果
5.曬一下戰績,沒敢繼續,怕好友拿“磚頭”砸我~
個人排行榜
“跳一跳”得分秘籍:
游戲的目的是娛樂,正如學習的目的是為了獲得技能,考試得高分那是順便為之,既然為了游戲還是本著娛樂的心態用正常手段去玩,下面附上“跳一跳”得分秘籍:
游戲常規得分方法是跳中靶心的+3分,跳到環靶和靶心之間+2分,跳到環靶之外且在方塊之上的+1分,連續跳中靶心的,第1次+2分,第2次+4分,第3次+6分,依次類推,中斷的話會重新計算得分。
里面還暗藏了許多得分點,比如跳到“污水井蓋”停留2秒左右,加 5 分,“魔方”加 10 分,“士多店”停加 15 分,“音樂播放器”加 30 分,記得這幾個都是要停留幾秒。
點擊左上角的數字,可以讓小人小步向前移動,方便微調位置,選擇跟更適合的起跳點。
音樂播放器加30分
最后放大招,其實你模擬滑動可以更好的控制時間,就是從小人落腳點滑到下一個落點靶心位置,相信這些技巧可以讓你在朋友圈曬一曬了。
關注我,帶給您更多有趣有意義的信息~