1. 程式人生 > >室友玩個掃雷通關了還跟我炫耀!於是用Python做了個十秒鐘通關的自動掃雷程式,讓他受到了驚嚇!

室友玩個掃雷通關了還跟我炫耀!於是用Python做了個十秒鐘通關的自動掃雷程式,讓他受到了驚嚇!

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

各種炫耀,如下圖!

基友掃雷通關發我炫耀!於是用Python開發了自動掃雷程式十秒通關

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

基友掃雷通關發我炫耀!於是用Python開發了自動掃雷程式十秒通關

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

進入正題

再說一句廢話,加v❤keli1810408387可獲得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開發了自動掃雷程式十秒通關