當java程序員遇到微信跳一跳會擦出什么火花?(詳細教程)

“喏,我已經盡力了……”

12月28日,微信宣布,小程序增加了新的類目:小游戲,同時上線小游戲「跳一跳」,瞬間跳一跳成了全民游戲,玩得厲害的撐死不過200多分,如何牢牢占據排行榜的第一位呢?用Python幫助你,Python真的無所不能。

“跳一跳”這個東西還是今天剛接觸到的,看到了python群中有人再問“微信跳一跳的外掛有人寫了沒”,“早就有了”,“github”,“等著出個更詳細的教程教程沒看懂,主要沒有用過adb”。

不過沒關系,你們跳的再好,在毫無心理波動的程序面前都是渣渣。

剛剛會python的小白想玩怎么辦?

下有詳細的教程,哈哈,包教會不收任何的費用。

感受一下被支配的恐懼吧:

使用工具

1.python3.6

2.adb

3.安卓手機(版本4.4+)

使用原理

# === 思路 ===

# 核心:每次落穩(wěn)之后截圖,根據截圖算出棋子的坐標和下一個塊頂面的中點坐標,

# 根據兩個點的距離乘以一個時間系數獲得長按的時間

# 識別棋子:靠棋子的顏色來識別位置,通過截圖發(fā)現最下面一行大概是一條直線,就從上往下一行一行遍歷,

# 比較顏色(顏色用了一個區(qū)間來比較)找到最下面的那一行的所有點,然后求個中點,

# 求好之后再讓 Y 軸坐標減小棋子底盤的一半高度從而得到中心點的坐標

# 識別棋盤:靠底色和方塊的色差來做,從分數之下的位置開始,一行一行掃描,由于圓形的塊最頂上是一條線,

# 方形的上面大概是一個點,所以就用類似識別棋子的做法多識別了幾個點求中點,

# 這時候得到了塊中點的 X 軸坐標,這時候假設現在棋子在當前塊的中心,

# 根據一個通過截圖獲取的固定的角度來推出中點的 Y 坐標

# 最后:根據兩點的坐標算距離乘以系數來獲取長按時間(似乎可以直接用 X 軸距離)

ADB

首先碰到的就是什么是adb。Android Debug Bridge

Android操作系統與桌面電腦間溝通的一個命令列工具。

可以在電腦上通過命令達到操作手機的效果。

下載

在許多Android用戶多次呼吁之后,Google終于將ADB和Fastboot作為單獨的文件提供給用戶下載。以前這些文件只包含在大尺寸的Android SDK或Android Studio當中提供給用戶,現在這種變化意味著它們現在比以往更快,更容易執(zhí)行和側載。

這樣就免去了下載一個600M的Android SDK,這也是坑了我。

1.下載之后將其路徑添加到環(huán)境變量中去。

2.手機打開開發(fā)者,USb調試,用數據線連接到電腦上,如果手機界面顯示USB授權,請點擊確認。

3.在cmd輸入

就可以使用了,本次使用的命令和常用的幾個命令

本次使用到的命令,先了解這寫就可以應對

adb start-server 開啟進程

adb decives 找到設備

adb shell screencao -p /sdcard/i.png 對手機進行截屏保存到sdcard的目錄下面。

adb pull /sdcard/i.png . 將sdcard目錄下的i.png傳送到當前目錄下面

adb pull /adcard/i.png D://

注意這些命令在adb下 而不是在shell下面。

adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png .

用adb工具點擊屏幕蓄力一跳。

adb shell input swipe x y x y time

遇到的問題

最開始一直沒有檢測到手機。然后用360助手排查問題。找到開發(fā)者。就是連不上。最可氣的就是硬件的問題吧。后來換了一個數據線。解決

端口被360手機助手占用。

只要在進程中退掉360 手機助手

使用安卓模擬器上面的微信的版本不支持(可能是我忘了更新了吧?。簳r還是用到了真機上的微信。找來多年不用的安卓機。然后一頓root。

玩了好大一會 ,一個一個測試命令,當玩到

adb shell input swipe x y x y time

這條命令的時候延伸

adb shell input(Android模擬輸入),input可以用來模擬各種輸入設備的輸入操作。

D:>adb shell inputusage: input ... input text input keyevent input [touchscreen|touchpad|touchnavigation] tap input [touchscreen|touchpad|touchnavigation] swipe [duration(ms)] input trackball press input trackball roll

1. keyevent指的是android對應的keycode,比如home鍵的keycode=3,back鍵的keycode=4.

具體請查閱 android keycode詳解http://blog.csdn.net/huiguixian/article/details/8550170

然后使用的話比較簡單,比如想模擬home按鍵:

adb shell input keyevent 3

請查閱上述文章,根據具體keycode編輯即可。

不僅有滑動的操作,還有其他的鍵的操作。

adb shell input keyevent 3 home鍵返回adb shell input keyevent 4 返回鍵

2. 關于tap的話,他模擬的是touch屏幕的事件,只需給出x、y坐標即可。

此x、y坐標對應的是真實的屏幕分辨率,所以要根據具體手機具體看,比如你想點擊屏幕(x, y) = (250, 250)位置:

adb shell input tap 250 250

3. 關于swipe同tap是一樣的,只是他是模擬滑動的事件,給出起點和終點的坐標即可。例如從屏幕(250, 250), 到屏幕(300, 300)即

adb shell input swipe 250 250 300 300 //滑動 adb shell input swipe 100 100 200 200 300 //從 100 100 經歷300毫秒滑動到 200 200 //長按 adb shell input swipe 100 100 100 100 1000 //在 100 100 位置長按 1000毫秒

特別注意下 swipe后面跟的有時間的參數[duration(ms)],這個與手機的版本的問題有關。

input命令是用來向設備發(fā)送模擬操作的命令:

因為版本不同,input命令也有所不同

以下為Android 4.0的input命令:

usage:input text input keyevent input tap input swipe

明顯兩個版本的input命令是有差異的,也就是說在版本是4.4以下的情況下。是不能用swipe后面跟時間的。在使用的時候一定要記得查詢清楚所使用的Android版本!

(我拿到手機后就root了,然后一看版本是4.3的,拿著4.3版本的手機心中飛過***,好的一點是還有一個手機,就升級一下版本,這樣換手機在接著搞。其他就不會出現什么錯誤了)

小結

adb在這次所起到的作用是什么?

1.簡單來說截取跳一跳中的圖片(用python分析計算)

2.精確執(zhí)行命令,包括按壓的時間,按壓的間隔(python通過調用cmd能做到)

如果還有什么不懂的可以加群,在這里給大家提供一個java交流學習的地方,java架構群:680130298

1)具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加群。

2)在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加群。

3)如果沒有工作經驗,但基礎非常扎實,對java工作機制,常用設計思想,常用java開發(fā)框架掌握熟練的可以加群。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容