室友玩個掃雷通關了還跟我炫耀!於是用Python做了個十秒鐘通關的自動掃雷程式,讓他受到了驚嚇!
阿新 • • 發佈:2018-12-11
起因是這樣的,室友和我一起玩掃雷高難度,今天他來告訴我他的通關了!
各種炫耀,如下圖!
於是,我用就用Python開發了個自動掃雷程式!跟他裝了逼,瞬間喊我哥,要我教他
好了,不廢話了!本文用於娛樂,歡迎大佬們指點!
進入正題
再說一句廢話,加v❤keli1810408387可獲得Python電子書一套
---------------------------------
自動掃雷一般分為兩種,一種是讀取記憶體資料,而另一種是通過分析圖片獲得資料,並通過模擬滑鼠操作,這裡我用的是第二種方式。
一、準備工作
- 掃雷遊戲:我是win10,沒有預設的掃雷,所以去掃雷網下載
- python 3:我的版本是 python 3.6.1
- python的第三方庫:win32api,win32gui,win32con,Pillow,numpy,opencv
我給出我的第三方庫和版本僅供參考
二、關鍵程式碼組成
1.找到遊戲視窗與座標
2. 鎖定並抓取雷區影象
3. 各影象的RGBA值
4. 掃描雷區影象儲存至一個二維陣列map
5.掃雷演算法
這裡我採用的最基礎的演算法
- 首先點出一個點
- 掃描所有數字,如果周圍空白+插旗==數字,則空白均有雷,右鍵點選空白插旗
- 掃描所有數字,如果周圍插旗==數字,則空白均沒有雷,左鍵點選空白
- 迴圈2、3,如果沒有符合條件的,則隨機點選一個白塊
這個演算法在初級和中級通過率都不錯,但是在高階成功率慘不忍睹,主要是沒有考慮邏輯組合以及白塊是雷的概率問題,可以對這兩個點進行改進,提高成功率
怎麼樣?歡迎大佬指點!