1. 程式人生 > >室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

起因是這樣的,室友和我一起玩掃雷高難度,今天他來告訴我他的通關了!

各種炫耀,如下圖!

學習Python中有不明白推薦加入交流群
                號:960410445
                群裡有志同道合的小夥伴,互幫互助,
                群裡有不錯的視訊學習教程和PDF!

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

於是,我用就用Python開發了個自動掃雷程式!跟他裝了逼,瞬間喊我哥,要我教他

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

好了,不廢話了!本文用於娛樂,歡迎大佬們指點!

進入正題


自動掃雷一般分為兩種,一種是讀取記憶體資料,而另一種是通過分析圖片獲得資料,並通過模擬滑鼠操作,這裡我用的是第二種方式。

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

一、準備工作

  • 掃雷遊戲:我是win10,沒有預設的掃雷,所以去掃雷網下載
  • python 3:我的版本是 python 3.6.1
  • python的第三方庫:win32api,win32gui,win32con,Pillow,numpy,opencv

我給出我的第三方庫和版本僅供參考

二、關鍵程式碼組成

1.找到遊戲視窗與座標

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

2. 鎖定並抓取雷區影象

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

3. 各影象的RGBA值

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

4. 掃描雷區影象儲存至一個二維陣列map

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

5.掃雷演算法

這裡我採用的最基礎的演算法

  1. 首先點出一個點
  2. 掃描所有數字,如果周圍空白+插旗==數字,則空白均有雷,右鍵點選空白插旗
  3. 掃描所有數字,如果周圍插旗==數字,則空白均沒有雷,左鍵點選空白
  4. 迴圈2、3,如果沒有符合條件的,則隨機點選一個白塊

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!

 

這個演算法在初級和中級通過率都不錯,但是在高階成功率慘不忍睹,主要是沒有考慮邏輯組合以及白塊是雷的概率問題,可以對這兩個點進行改進,提高成功率

怎麼樣?歡迎大佬指點!

室友玩個掃雷通關炫耀?我用Python做個十秒通關的程式迴應他!