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