本文主要來講個個好玩的東西,近來微信剛出的跳一跳微信小程序的游戲很火,看到很多人都達到了二三百分就各種刷朋友圈了。

甩手一個表情
最終我們達到的分數卻是這樣的:

羨慕吧
一定會有人拍手叫好,“黃金右手”!說真的,我已經不用右手好多年,而且我玩這個游戲壓根就沒用手,而是意念!哈哈,別噴我,開個玩笑而已,肯定是利用技術手段啦,什么技術?python嘍~哈哈,不過不是我寫的,我自己是做Android開發的,我對于python從來沒有接觸,只是恰好在蛋哥公眾號看到關于這個游戲的文章,覺得有意思,就花了點時間試著搞了一下,沒想到還跑成功了,收獲也挺多的:smile:。本文針對mac系統+Android全面屏手機,如想了解其他系統或者手機的教程,可以到項目主頁或者issue中探索一下。好了,下面給大家看看它的“廬山真面目”。
關于游戲腳本,作者已經開源在了github,地址在 https://github.com/wangshub/wechat_jump_game ,有興趣的可以先去看看。
一般的,手機型號比較老(像Android4.3以下的),或者比較新(像vivox20,小米mix2等等剛出的全面屏手機),再或者比較稀有的(像TCL,聯想,諾基亞等等),順利的跑起腳本還是挺難的,多少都會有些問題,由于腳本是作者幾個小時就寫好的,已經很厲害了,適配的這些問題不可能全部都面面具到,畢竟Android機型千千萬呀!希望大家多多體諒,作者精力也是有限,不可能及時回答每一個人的問題,大家畢竟也是搞技術的,有些問題應該都有能力解決的,例如issue,度娘等等。這里我簡單說明以下自己用mac和vivox20如何跑起來的。
首先,我們到作者的源碼地址看看原理和Android的使用步驟,如下:
將手機點擊到《跳一跳》小程序界面;
用 ADB 工具獲取當前手機截圖,并用 ADB 將截圖 pull 上來
adb shell screencap -p /sdcard/autojump.png adb pull /sdcard/autojump.png .
計算按壓時間
手動版:用 Matplotlib 顯示截圖,用鼠標點擊起始點和目標位置,計算像素距離;
自動版:靠棋子的顏色來識別棋子,靠底色和方塊的色差來識別棋盤;
用 ADB 工具點擊屏幕蓄力一跳;
adb shell input swipe x y x y time(ms)
原來是利用adb來計算和模擬位置的,我們暫時不需要關心這個,再來看看Android手機使用步驟:
OK,我就按照步驟一步一步來:
1.打開手機開發者選項和usb調試,這一步我想不需要多說了,大家應該都知道怎么做;
2.需要確保adb devices可以找到設備。
搞移動端開發的應該都知道adb吧,不過可能有些人沒有接觸過,這里就簡單說明一下如何執行adb命令。首先需要下載adb工具,一般Android studio的sdk中自帶了,我們只需要配置一下環境變量就可以了,想知道如何配置,可以遵循如下步驟:
- 打開mac的terminal終端,輸入 cd ~/ 【進入當前用戶的home目錄】- 輸入 touch .bash_profile 【如果沒有.bash_profile這個文件,則創建一個這個文件】- 輸入 open .bash_profile 【打開我們創建的這個文件,此時應該彈出一個文本編輯框,如果是第一次配置環境,那么文本編輯框為空白】- 在打開的文本編輯器中寫入如下代碼: export ANDROID_HOME=/usr/local/opt/android-sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools- 注意的ANDROID_HOME后面應該根據自己的sdk路徑來填寫,其余可以直接復制。至于sdk路徑,可以打開Android Studio,在preference(Windows的setting)中搜索sdk來查看。在終端中輸入 source .bash_profile 【使我們的改動生效】- 輸入 adb 【驗證是否完成配置,如果不顯示 adb: command not found,說明配置完成 】如果沒有用過Android studio,那么可以去百度一下如何安裝,我相信這對于大家來說不是一件困難的事,安裝完成后只需要按照上面說的配置一下環境變量就可以了。接下來我們將手機連接到電腦,并開啟第一步中的設置選項后,在電腦終端輸入:
adb devices
不出意外的話,終端會出現類似如下內容:
Last login: Mon Jan 1 20:20:11 on ttys000MoosdeMacBook-Pro:~ moos$ adb devicesList of devices attacheda619aaxx device
這樣就代表我們adb設備連接成功了。
打開我們的微信中“跳一跳”游戲小程序,點擊開始游戲,手機出現游戲初始界面;
要求我們運行腳本項目中的python文件,這就需要我們安裝python了,不用擔心,一般mac系統自帶了python,我們終端
輸入如下命令:
python
如果出現如下內容,則說明我們已經安裝過了:
MoosdeMacBook-Pro:~ moos$ pythonPython 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwinType "help", "copyright", "credits" or "license" for more information.>>>
下面我們就需要運行wechat_jump_auto.py這個腳本文件了,這個是自動玩游戲,你也可以選擇手動玩,運行wechat_jump_py3.py即可,如何運行?很簡單,只需要把github上面的項目下載下來,并進入到該目錄下,執行如下命令即可(以自動版為例):
python wechat_jump_auto.py
這樣,我們就可以跑起來這個腳本了,但是你可能會遇到這個問題:
Traceback (most recent call last): File "wechat_jump_auto.py", line 8, in <module> from PIL import Image, ImageDrawImportError: No module named PILMoosdeMacBook-Pro:wechat_jump_game-master moos$
只需要安裝pillow,執行如下命令即可:
sudo pip install Pillow
記得加上sudo,需要獲取系統權限。
這樣,應該基本可以跑起來腳本了。但是,vivox20手機運行了腳本之后,一直沒有自動游戲,后來發現,可能是不同手機分辨率和尺寸差異,導致腳本沒有是識別到對應的模擬按壓的坐標位置,可以修改一下對應的按壓參數為320,1210,720,910,對應的修改位置是wechat_jump_auto.py中的如下參數:
swipe['x1'], swipe['y1'], swipe['x2'], swipe['y2'] = 320, 410, 320, 410
該修改意見已經被作者合并到主分支了,打開該文件就可以看到了。再跑一下試試,發現還是不行,程序在運行,位置坐標也在變化,但游戲沒有進行,那可能就是手機的問題了,嘗試開啟開發者設置中的usb安全驗證設置,我再跑,嘿,可以了:

效果圖
請忽略這渣圖,vysor還沒有很好的適配vivox20,并不是gif的問題:cry:,再看看終端的數據:
('scan_start_y: ', 720)(1514815959, 0, 0, 0, 0)adb shell input swipe 320 1210 720 910 200('scan_start_y: ', 670)(1514815962, 0, 0, 0, 0)adb shell input swipe 320 1210 720 910 200('scan_start_y: ', 670)(1514815966, 0, 0, 0, 0)adb shell input swipe 320 1210 720 910 200('scan_start_y: ', 820)(1514815971, 338, 1224, 788, 968)adb shell input swipe 320 1210 720 910 710('scan_start_y: ', 920)(1514815976, 697, 1203, 400, 1008)adb shell input swipe 320 1210 720 910 487('scan_start_y: ', 820)(1514815979, 320, 1275, 839, 940)adb shell input swipe 320 1210 720 910 847('scan_start_y: ', 870)(1514815984, 392, 1194, 718, 1009)adb shell input swipe 320 1210 720 910 514('scan_start_y: ', 870)(1514815987, 660, 1167, 450, 1052)adb shell input swipe 320 1210 720 910 328('scan_start_y: ', 770)...這樣就沒毛病了,同時,我還修改了2160x1080的配置參數,提高了跳躍的準確度,達到幾千分不是問題,并且已經被作者同意了合并了,無需再做額外修改了。
在借用該腳本作者的一句話:
事實證明,機器人比人更會玩兒游戲。
總結
以上所述是小編給大家介紹的Android版微信跳一跳小游戲利用技術手段達到高分的操作方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
新聞熱點
疑難解答