1. 程式人生 > >新手看完Python實現微信跳一跳自動執行,再忍不住了

新手看完Python實現微信跳一跳自動執行,再忍不住了

我相信現在很多人都在玩微信的跳一跳小遊戲,前面幾天,很多人在朋友圈晒「跳一跳」人工智慧開掛教程:如何讓電腦自己玩微信跳一跳。

很多朋友表示不太懂這是什麼。

首先,這不是一個「破解外掛」安裝教程,而是一個「破解軟體」製作教程,要靠自己用程式碼一點點寫出來,你需要有一定的程式設計基礎,這裡用的是 Python 語言,所以一定的 Python 語法基礎是必備的。

其次,你需要一部Android 手機,iPhone 手機是無法實現的。

對於掌握了基本 Python 語法但有些迷茫不知道該怎麼用的同學,這個小專案會很適合你,能夠幫你找回對 Python 的熱愛!

 

在這裡還是要推薦下我自己建的Python開發學習群:301056051,包括我自己整理的一份2018最新的Python進階資料和高階開發教程,歡迎進階中和進想深入Python的小夥伴

整個教程的框架是這樣子:

新手看完Python實現微信跳一跳自動執行,再忍不住了

這裡先簡單講下解決問題的思路。因為整個遊戲的背景是純色的,分數和退出的位置是固定的,只有到了小人兒和起跳位置才出現了顏色的分隔,那麼程式碼只需要判斷檢測到哪一行的顏色不一樣,那就說明 get 到了目標位置。

新手看完Python實現微信跳一跳自動執行,再忍不住了

簡單來說,只要找到顏色出現區隔的地方,就可以得到了跳躍平面的頂點式,但是如何確定可以安全跳躍的目標點呢?

通過觀察發現,遊戲中需要跳躍的平面不是長方形就是圓形或者菱形,形狀都是對稱的

。所以一旦找到頂點,不需要更改 x 軸,只需要順著頂點往下面探索即可

當然這裡有一個難點就是跳躍點的上頂點和下頂點的背景顏色看似一樣但不完全一樣,略微有些漸變,所以在工程實現的時候需要注意這一點。

新手看完Python實現微信跳一跳自動執行,再忍不住了

總結下,確定目標位置的整個思路就是先找到跳躍平面的頂點,再找到終點,把這兩個點連成一條線,然後取1/2或者1/3的地方,就是安全的落腳目標點。

但僅僅知道目標位置的點是不夠的,我們還需要知道小人兒所在的地方。確定這個是比較難的。因為它的頭部會落在純色背景色上面,就像上圖所示,但是腳部卻會出現在跳躍平面上的任意一點,而跳躍平面的顏色又總是在變化

新手看完Python實現微信跳一跳自動執行,再忍不住了

不過還好,小人兒本身的顏色是不會變的。

我們只需要取出類似上圖小人一個點的顏色,然後遍歷整個影象上每一個點,找出哪個點的顏色值和之前所取的顏色值最相近,那個點就是小人兒所在位置。

到目前為止,我們已經確定了起跳點和落腳點,接下來要做的就是計算兩點之間的距離。

新手看完Python實現微信跳一跳自動執行,再忍不住了

這裡只需要用到初中幾何知識:勾股定理。通過兩點的座標,得出直角三角形底邊和高,然後算出斜邊的長度,就是兩點間的距離。

新手看完Python實現微信跳一跳自動執行,再忍不住了

最後,我們根據距離計算出需要多少秒跳過去,然後模擬出點選,就可以實現整個自動跳的過程。

以上就是跳一跳實現自動跳的基本原理和思路。具體要怎麼通過程式碼實現、中間需要注意的小細節以及如果出現錯誤應該如何去處理。

新手看完Python實現微信跳一跳自動執行,再忍不住了

以上大概的教程已經分析出整體的思路,有想法的朋友可以試著做一下。

 

要想寫出穩定健壯的程式,必須要學會異常處理來保護程式,儘量讓程式不要crash,Python的異常處理到底長啥樣呢,有哪些是初學者特別容易犯的錯呢,不要急,我都給你總結好了~~

要點:

  • 語法基本介紹

異常例項:

  • 猜數字的遊戲

  • 讀檔案的處理

1基本的語法介紹

Python中有一套異常處理機制,來幫助我們進行錯誤處理,語法也比較簡單:

1)try-except語句:

try:

do something

except Exception, e:

handle error

else:

pass

  • try 語句是用來捕獲異常

  • except語句是用來處理不同的異常,Exception是異常的種類,分很多種,不清楚的可以看看上一篇裡面例舉的9種.

  • e表示異常的資訊

  • else 表示若沒有發生異常,當try執行完畢之後,就會執行else

2)try-except-finally語句:

try:

do something

except Exception:

handle error

finally:

do finally

  • 若try語句是用來捕獲異常,若沒有發生錯誤,執行try程式碼之後,直接執行finally

  • 若try語句捕獲到異常,首先執行except部分處理錯誤,然後才是執行finally

其實finally語句是表示無論是否檢測到異常,都會執行finally程式碼,因此一般我們都會把一些清理的工作,比如關閉檔案或者釋放資源,放在finally裡面.

2猜數字的遊戲#處理單個異常

先看一下最簡單的猜數字的遊戲,隨機取1-10,然後讓你猜:

新手看完Python實現微信跳一跳自動執行,再忍不住了

>>

Enter 1~10:5

guess Bigger: 5

Enter 1~10:3

guess Bigger: 3

Enter 1~10:2

guess Bigger: 2

Enter 1~10:1

Great,You guess correct.Game Over

這個是沒有異常保護的,若正常輸入沒有問題,但是若你惡意輸入aa,或者是非數字,那就會有問題了:

Enter 1~10:aa

ValueError: invalid literal for int() with base 10: 'aa'

所以我們要加入異常處理.

新手看完Python實現微信跳一跳自動執行,再忍不住了

3.檔案讀取,處理多個異常

我們在處理檔案讀取的時候,可能會遇到多個異常,我們分步來解釋

Step1:假如我們當前目錄下沒有123.txt檔案,然後執行下面的程式碼

Step2:我們在當前目錄下里面新建一個123.txt檔案,並且把裡面的寫一個100

|----123.txt---

100

再執行我們的程式碼,這下沒有問題了

新手看完Python實現微信跳一跳自動執行,再忍不住了

Step3:我們把123.txt裡面的100改成字串'aa',會出現什麼情況

|----123.txt---

aa

再執行step2的程式碼,就會報錯這是一個ValueError,但是我們的程式碼只捕捉了IOError,沒有捕捉ValueError,所以沒有處理我們except部分,我們繼續改程式碼

Step4:加入多個異常處理,加入處理ValueError

這樣就捕捉到了ValueError,Python在異常處理裡面是可以捕捉多個異常,也就是說我們若發生了IOError,就執行IOError裡面的異常處理,若發生了ValueError,就執行ValueError裡面的異常,哎呦不錯哦.

也許有同學會問,太麻煩了,有的時候我們也不知道異常的型別,能不能捕獲所有的異常,有的你只要 except Exception 就可以了.


好了異常處理的例項入門就講到這裡啦,希望能給初學者一些啟發,若有什麼不懂的,也可以留言跟我探討交流.

 

在這裡還是要推薦下我自己建的Python開發學習群:301056051,包括我自己整理的一份2018最新的Python進階資料和高階開發教程,歡迎進階中和進想深入Python的小夥伴