1. 程式人生 > >用python玩轉微信小遊戲 大小猜猜看

用python玩轉微信小遊戲 大小猜猜看

用python玩轉微信小遊戲 大小猜猜看

遊戲模式

在微信小程式裡搜尋“大小猜猜看”,即可找到該遊戲。
遊戲的目標比拼計算能力,找出誰大誰小,一共有40題,全部答對即挑戰成功。
一開始答題時間充足,數字也比較簡單,後面就需要特別快的計算速度。
遊戲介面成功通關介面

專案地址

本專案地址:https://github.com/wangyunpengbio/wechat_game_daxiao

工具介紹

  • Python 3.5
  • OpenCV包pip install opencv-python
  • win32gui, win32ui, win32con(Python呼叫windows的原生API)
  • PyUserInput包pip install PyUserInput 模擬滑鼠鍵盤

原理說明

  1. 首先使用ApowerMirror軟體將手機螢幕投屏到電腦,
  2. 手動答題,蒐集訓練集資料,呼叫OpenCV庫,進行圖片相關處理
  3. 將圖片匯入邏輯迴歸模型,訓練模型
  4. 利用邏輯迴歸模型識別圖片,得出答案
  5. 模擬滑鼠自動點選正確答案

使用方法

  1. 首先我們得安裝ApowerMirror軟體,軟體下載連結:ApowerMirror下載
  2. 想辦法獲得表示式區域頂部和底部的y座標相對於整個手機螢幕的高度的比例,然後將對應值填入根目錄下的config.py檔案中的 exp_area_top_rate 和 exp_area_bottom_rate 處
  3. 開啟ApowerMirror軟體,將手機螢幕投影到電腦上,然後將ApowerMirror拉到桌面的一個固定位置,建議拉到左上角。使用QQ的截圖功能或者是其他方法獲取以下引數並填入config.py的對應位置:從PC端截圖時,擷取區域左上角相對桌面的x座標:projection_x; 擷取區域左上角相對桌面的y座標:projection_y; 擷取區域的寬度:projection_width; 從PC端截圖時,擷取區域的高度:projection_height; 使用PC進行截圖時點選手機螢幕區域的x座標:pc_tap_x; 使用PC進行截圖時點選手機螢幕上部分選項的y座標:pc_tap_up_y; 使用PC進行截圖時點選手機螢幕下部分選項的y座標:pc_tap_down_y;
  4. 將config.py中的 debug 引數設定為False,開啟遊戲介面,將ApowerMirror拉到桌面左上角,執行python程式

訓練自己的模型

  1. 首先需要確保你已經按照說明配置好了config.py中的相關引數,整個手機螢幕的截圖和表示式區域的截圖都是正確的。
  2. 將config.py中的 debug 引數設定為True,然後進入遊戲,同時執行main.py,你需要手動進行答題,此時程式每隔0.3秒會擷取一次手機螢幕。
  3. 執行imageTools.py中的get_char_for_train()方法,獲取到用於訓練的單個字元儲存到SingleCharForTrain資料夾中。
  4. 執行ml.py中的cleanTrainChar()方法將TrainChar資料夾中原有的訓練字元清空。
  5. 手工將SingleCharForTrain資料夾中的訓練字元移動到TrainChar中對應的子資料夾裡面。
  6. 呼叫ml.py中的dumpModel()方法訓練自己的模型.

常見問題

  1. 訓練模型中,全白色的圖片代表著“減號”
  2. 字元識別錯誤:建議認真檢查截圖的相關引數設定,確定擷取到正確的區域,重新訓練資料。
    其他問題請在本專案的ISSUE中給我留言。

致謝

部分程式碼來源:微信小遊戲《加減大師》、《加減王者》系列遊戲輔助