Android版微信跳一跳小游戲利用技術(shù)手段達(dá)到高分的操作方法
本文主要來(lái)講個(gè)個(gè)好玩的東西,近來(lái)微信剛出的跳一跳微信小程序的游戲很火,看到很多人都達(dá)到了二三百分就各種刷朋友圈了。
甩手一個(gè)表情
最終我們達(dá)到的分?jǐn)?shù)卻是這樣的:
羨慕吧
一定會(huì)有人拍手叫好,“黃金右手”!說(shuō)真的,我已經(jīng)不用右手好多年,而且我玩這個(gè)游戲壓根就沒(méi)用手,而是意念!哈哈,別噴我,開(kāi)個(gè)玩笑而已,肯定是利用技術(shù)手段啦,什么技術(shù)?python嘍~哈哈,不過(guò)不是我寫(xiě)的,我自己是做Android開(kāi)發(fā)的,我對(duì)于python從來(lái)沒(méi)有接觸,只是恰好在蛋哥公眾號(hào)看到關(guān)于這個(gè)游戲的文章,覺(jué)得有意思,就花了點(diǎn)時(shí)間試著搞了一下,沒(méi)想到還跑成功了,收獲也挺多的:smile:。本文針對(duì)mac系統(tǒng)+Android全面屏手機(jī),如想了解其他系統(tǒng)或者手機(jī)的教程,可以到項(xiàng)目主頁(yè)或者issue中探索一下。好了,下面給大家看看它的“廬山真面目”。
關(guān)于游戲腳本,作者已經(jīng)開(kāi)源在了github,地址在 https://github.com/wangshub/wechat_jump_game ,有興趣的可以先去看看。
一般的,手機(jī)型號(hào)比較老(像Android4.3以下的),或者比較新(像vivox20,小米mix2等等剛出的全面屏手機(jī)),再或者比較稀有的(像TCL,聯(lián)想,諾基亞等等),順利的跑起腳本還是挺難的,多少都會(huì)有些問(wèn)題,由于腳本是作者幾個(gè)小時(shí)就寫(xiě)好的,已經(jīng)很厲害了,適配的這些問(wèn)題不可能全部都面面具到,畢竟Android機(jī)型千千萬(wàn)呀!希望大家多多體諒,作者精力也是有限,不可能及時(shí)回答每一個(gè)人的問(wèn)題,大家畢竟也是搞技術(shù)的,有些問(wèn)題應(yīng)該都有能力解決的,例如issue,度娘等等。這里我簡(jiǎn)單說(shuō)明以下自己用mac和vivox20如何跑起來(lái)的。
首先,我們到作者的源碼地址看看原理和Android的使用步驟,如下:
將手機(jī)點(diǎn)擊到《跳一跳》小程序界面;
用 ADB 工具獲取當(dāng)前手機(jī)截圖,并用 ADB 將截圖 pull 上來(lái)
adb shell screencap -p /sdcard/autojump.png adb pull /sdcard/autojump.png .
計(jì)算按壓時(shí)間
手動(dòng)版:用 Matplotlib 顯示截圖,用鼠標(biāo)點(diǎn)擊起始點(diǎn)和目標(biāo)位置,計(jì)算像素距離;
自動(dòng)版:靠棋子的顏色來(lái)識(shí)別棋子,靠底色和方塊的色差來(lái)識(shí)別棋盤(pán);
用 ADB 工具點(diǎn)擊屏幕蓄力一跳;
adb shell input swipe x y x y time(ms)
原來(lái)是利用adb來(lái)計(jì)算和模擬位置的,我們暫時(shí)不需要關(guān)心這個(gè),再來(lái)看看Android手機(jī)使用步驟:
- 安卓手機(jī)打開(kāi) USB 調(diào)試,設(shè)置》開(kāi)發(fā)者選項(xiàng)》USB 調(diào)試
- 電腦與手機(jī) USB 線(xiàn)連接,確保執(zhí)行adb devices可以找到設(shè)備 ID
- 界面轉(zhuǎn)至微信跳一跳游戲,點(diǎn)擊開(kāi)始游戲
- 運(yùn)行python wechat_jump_auto.py,如果手機(jī)界面顯示 USB 授權(quán),請(qǐng)點(diǎn)擊確認(rèn)
- 請(qǐng)按照你的手機(jī)分辨率從./config/文件夾找到相應(yīng)的配置,拷貝到 *.py 同級(jí)目錄./config.json(如果屏幕分辨率能成功探測(cè),會(huì)直接調(diào)用 config 目錄的配置,不需要復(fù)制)
OK,我就按照步驟一步一步來(lái):
1.打開(kāi)手機(jī)開(kāi)發(fā)者選項(xiàng)和usb調(diào)試,這一步我想不需要多說(shuō)了,大家應(yīng)該都知道怎么做;
2.需要確保adb devices可以找到設(shè)備。
搞移動(dòng)端開(kāi)發(fā)的應(yīng)該都知道adb吧,不過(guò)可能有些人沒(méi)有接觸過(guò),這里就簡(jiǎn)單說(shuō)明一下如何執(zhí)行adb命令。首先需要下載adb工具,一般Android studio的sdk中自帶了,我們只需要配置一下環(huán)境變量就可以了,想知道如何配置,可以遵循如下步驟:
- 打開(kāi)mac的terminal終端,輸入 cd ~/ 【進(jìn)入當(dāng)前用戶(hù)的home目錄】 - 輸入 touch .bash_profile 【如果沒(méi)有.bash_profile這個(gè)文件,則創(chuàng)建一個(gè)這個(gè)文件】 - 輸入 open .bash_profile 【打開(kāi)我們創(chuàng)建的這個(gè)文件,此時(shí)應(yīng)該彈出一個(gè)文本編輯框,如果是第一次配置環(huán)境,那么文本編輯框?yàn)榭瞻住? - 在打開(kāi)的文本編輯器中寫(xiě)入如下代碼: export ANDROID_HOME=/usr/local/opt/android-sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools - 注意的ANDROID_HOME后面應(yīng)該根據(jù)自己的sdk路徑來(lái)填寫(xiě),其余可以直接復(fù)制。至于sdk路徑,可以打開(kāi)Android Studio,在preference(Windows的setting)中搜索sdk來(lái)查看。 在終端中輸入 source .bash_profile 【使我們的改動(dòng)生效】 - 輸入 adb 【驗(yàn)證是否完成配置,如果不顯示 adb: command not found,說(shuō)明配置完成 】
如果沒(méi)有用過(guò)Android studio,那么可以去百度一下如何安裝,我相信這對(duì)于大家來(lái)說(shuō)不是一件困難的事,安裝完成后只需要按照上面說(shuō)的配置一下環(huán)境變量就可以了。接下來(lái)我們將手機(jī)連接到電腦,并開(kāi)啟第一步中的設(shè)置選項(xiàng)后,在電腦終端輸入:
adb devices
不出意外的話(huà),終端會(huì)出現(xiàn)類(lèi)似如下內(nèi)容:
Last login: Mon Jan 1 20:20:11 on ttys000 MoosdeMacBook-Pro:~ moos$ adb devices List of devices attached a619aaxx device
這樣就代表我們adb設(shè)備連接成功了。
打開(kāi)我們的微信中“跳一跳”游戲小程序,點(diǎn)擊開(kāi)始游戲,手機(jī)出現(xiàn)游戲初始界面;
要求我們運(yùn)行腳本項(xiàng)目中的python文件,這就需要我們安裝python了,不用擔(dān)心,一般mac系統(tǒng)自帶了python,我們終端
輸入如下命令:
python
如果出現(xiàn)如下內(nèi)容,則說(shuō)明我們已經(jīng)安裝過(guò)了:
MoosdeMacBook-Pro:~ moos$ python Python 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 darwin Type "help", "copyright", "credits" or "license" for more information. >>>
如果沒(méi)有安裝python,可以參考該文章: http://www.dbjr.com.cn/article/131924.htm
下面我們就需要運(yùn)行wechat_jump_auto.py這個(gè)腳本文件了,這個(gè)是自動(dòng)玩游戲,你也可以選擇手動(dòng)玩,運(yùn)行wechat_jump_py3.py即可,如何運(yùn)行?很簡(jiǎn)單,只需要把github上面的項(xiàng)目下載下來(lái),并進(jìn)入到該目錄下,執(zhí)行如下命令即可(以自動(dòng)版為例):
python wechat_jump_auto.py
這樣,我們就可以跑起來(lái)這個(gè)腳本了,但是你可能會(huì)遇到這個(gè)問(wèn)題:
Traceback (most recent call last): File "wechat_jump_auto.py", line 8, in <module> from PIL import Image, ImageDraw ImportError: No module named PIL MoosdeMacBook-Pro:wechat_jump_game-master moos$
只需要安裝pillow,執(zhí)行如下命令即可:
sudo pip install Pillow
記得加上sudo,需要獲取系統(tǒng)權(quán)限。
這樣,應(yīng)該基本可以跑起來(lái)腳本了。但是,vivox20手機(jī)運(yùn)行了腳本之后,一直沒(méi)有自動(dòng)游戲,后來(lái)發(fā)現(xiàn),可能是不同手機(jī)分辨率和尺寸差異,導(dǎo)致腳本沒(méi)有是識(shí)別到對(duì)應(yīng)的模擬按壓的坐標(biāo)位置,可以修改一下對(duì)應(yīng)的按壓參數(shù)為320,1210,720,910,對(duì)應(yīng)的修改位置是wechat_jump_auto.py中的如下參數(shù):
swipe['x1'], swipe['y1'], swipe['x2'], swipe['y2'] = 320, 410, 320, 410
該修改意見(jiàn)已經(jīng)被作者合并到主分支了,打開(kāi)該文件就可以看到了。再跑一下試試,發(fā)現(xiàn)還是不行,程序在運(yùn)行,位置坐標(biāo)也在變化,但游戲沒(méi)有進(jìn)行,那可能就是手機(jī)的問(wèn)題了,嘗試開(kāi)啟開(kāi)發(fā)者設(shè)置中的usb安全驗(yàn)證設(shè)置,我再跑,嘿,可以了:
效果圖
請(qǐng)忽略這渣圖,vysor還沒(méi)有很好的適配vivox20,并不是gif的問(wèn)題:cry:,再看看終端的數(shù)據(jù):
('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) ...
這樣就沒(méi)毛病了,同時(shí),我還修改了2160x1080的配置參數(shù),提高了跳躍的準(zhǔn)確度,達(dá)到幾千分不是問(wèn)題,并且已經(jīng)被作者同意了合并了,無(wú)需再做額外修改了。
在借用該腳本作者的一句話(huà):
事實(shí)證明,機(jī)器人比人更會(huì)玩兒游戲。
總結(jié)
以上所述是小編給大家介紹的Android版微信跳一跳小游戲利用技術(shù)手段達(dá)到高分的操作方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android多線(xiàn)程學(xué)習(xí)實(shí)例詳解
這篇文章主要介紹了Android多線(xiàn)程,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android多線(xiàn)程的概念、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-10-10Android直播app送禮物連擊動(dòng)畫(huà)效果(實(shí)例代碼)
最近在做公司的直播項(xiàng)目,需要實(shí)現(xiàn)一個(gè)觀看端連擊送禮物的控件,下面給大家分享實(shí)例代碼,需要的的朋友參考下吧2017-07-07android操作SQLite增刪改減實(shí)現(xiàn)代碼
android操作SQLite增刪改減實(shí)現(xiàn)代碼,學(xué)習(xí)android的朋友可以參考下。2010-11-11View中如何進(jìn)行手勢(shì)識(shí)別onFling動(dòng)作實(shí)現(xiàn)介紹
下面我們就以實(shí)現(xiàn)手勢(shì)識(shí)別的onFling動(dòng)作,在CwjView中我們從View類(lèi)繼承,當(dāng)然大家可以從TextView等更高層的界面中實(shí)現(xiàn)觸控,感興趣的朋友可以了解下哈2013-06-06詳解Flutter點(diǎn)擊空白隱藏鍵盤(pán)的全局做法
這篇文章主要介紹了詳解Flutter點(diǎn)擊空白隱藏鍵盤(pán)的全局做法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Android 深入探究自定義view之流式布局FlowLayout的使用
FlowLayout(int align, int hgap, int vgap)創(chuàng)建一個(gè)新的流布局管理器,它具有指定的對(duì)齊方式以及指定的水平和垂直間隙,意思就是說(shuō)從左上角開(kāi)始添加原件,依次往后排,第一行擠滿(mǎn)了就換一行接著排2021-11-11Android實(shí)現(xiàn)3D云標(biāo)簽效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)3D云標(biāo)簽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Flutter使用AnimationController實(shí)現(xiàn)控制動(dòng)畫(huà)
這篇文章主要想帶大家來(lái)嘗試一下Flutter如何使用AnimationController實(shí)現(xiàn)一個(gè)拖拽圖片,然后返回原點(diǎn)的動(dòng)畫(huà),感興趣的可以了解一下2023-05-05