Skip to content

EeroLai/Doomsday_Gunfire_Gala

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Doomsday 槍火盛宴 自動遊玩腳本

針對「Doomsday: Last Survivors」遊戲的 槍火盛宴 自動遊玩腳本。使用圖像識別技術讀取遊戲狀態,並透過改進的 2048 演算法計算最佳移動策略,自動控制遊戲進行。

功能特色

  • 🎯 精確的圖像識別:使用 Tesseract OCR 和 OpenCV 進行數字識別
  • 🧠 智能移動策略:整合多種評估指標(空格子、分數、單調性、平滑度等)
  • 🎮 自動化控制:自動截圖、識別、計算並執行最佳移動
  • 🔧 手動校準工具:提供多種校準工具,確保識別準確度
  • 📊 即時狀態顯示:顯示當前網格狀態和移動決策

系統需求

  • Windows 10/11
  • Python 3.8+
  • Tesseract OCR

安裝步驟

1. 安裝 Python 依賴套件

pip install -r requirements.txt

2. 安裝 Tesseract OCR

Windows 用戶:

  1. 下載 Tesseract OCR:

  2. 安裝建議:

    • 安裝到預設路徑:C:\Program Files\Tesseract-OCR
    • 勾選「Add to PATH」選項(如果有的話)
  3. 驗證安裝:

    tesseract --version
  4. 如果無法在命令列找到 tesseract,需要在 image_recognition.py 中設定路徑:

    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

    或根據您的安裝路徑調整(例如:D:\Program Files\Tesseract-OCR\tesseract.exe

快速開始

步驟 1: 校準格子位置(首次使用)

由於每個人的遊戲視窗大小和位置可能不同,需要先校準格子位置:

  1. 截取遊戲畫面

    python capture_window.py
  2. 測試並調整手動位置

    • 打開 setup_manual_positions.py
    • 修改 MANUAL_POSITIONS 字典中的座標
    • 座標格式:(row, col): (x1, y1, x2, y2),其中 (x1, y1) 是數字區域的左上角,(x2, y2) 是右下角
    • 運行以下命令生成標記圖片:
      python setup_manual_positions.py
    • 查看生成的 manual_grid_test.png,確認綠色框是否正確對齊每個數字
  3. 使用校準工具(可選)

    • find_window.py - 尋找遊戲視窗
    • calibrate_grid.py - 校準整體網格位置
    • adjust_grid_position.py - 調整網格左上角位置
    • adjust_grid_size.py - 調整網格大小
    • manual_grid_positions.py - 視覺化手動位置

步驟 2: 開始自動遊玩

當格子位置校準完成後:

python auto_play.py

腳本會自動:

  1. 截取遊戲視窗
  2. 識別 4x4 網格中的數字
  3. 計算最佳移動方向
  4. 發送方向鍵控制遊戲
  5. 等待動畫完成後繼續下一輪

參數調整

可以在 auto_play.py 最後一行調整參數:

auto_play_loop(max_iterations=100, delay=1.0)
  • max_iterations: 最大遊玩次數(預設 100)
  • delay: 每次移動之間的延遲秒數(預設 1.0 秒)

檔案說明

核心模組

  • auto_play.py - 主程式,整合所有功能的自動遊玩腳本
  • image_recognition.py - 圖像識別模組,負責截圖處理和數字識別
  • game_logic.py - 2048 遊戲邏輯,計算最佳移動策略
  • capture_window.py - 截取遊戲視窗畫面
  • auto_control.py / auto_control_pyautogui.py - 自動控制模組,發送方向鍵

校準工具

  • setup_manual_positions.py - 手動設定每個格子的精確座標(重要
  • manual_grid_positions.py - 視覺化手動位置的工具
  • find_window.py - 尋找遊戲視窗
  • calibrate_grid.py - 校準整體網格位置
  • adjust_grid_position.py - 調整網格位置
  • adjust_grid_size.py - 調整網格大小
  • find_grid_position.py - 尋找網格位置

其他工具

  • auto_detect_cell_positions.py - 自動檢測格子位置(實驗性)
  • fix_positions.py - 修復位置的工具

演算法說明

本腳本使用改進的 2048 演算法,綜合評估以下指標來決定最佳移動:

  1. 空格子數量(權重 20)- 保持更多空格子,增加遊戲靈活性
  2. 分數變化(權重 5)- 優先選擇能獲得更高分數的移動
  3. 單調性(權重 10)- 鼓勵數字按順序排列(如:2, 4, 8, 16)
  4. 平滑度(權重 0.1)- 減少相鄰格子的數字差異
  5. 最大數字位置(權重 100)- 鼓勵最大數字放在角落
  6. 合併機會(權重 15)- 優先選擇能產生合併的移動

這些權重可以在 game_logic.pyevaluate_move() 函數中調整。

疑難排解

問題:找不到遊戲視窗

  • 確保遊戲正在運行且視窗標題為 "Doomsday: Last Survivors"
  • 使用 find_window.py 檢查視窗是否存在
  • 確保遊戲視窗未被最小化

問題:數字識別不準確

  1. 檢查格子位置

    • 運行 python setup_manual_positions.py 生成標記圖片
    • 查看 manual_grid_test.png,確認綠色框是否正確對齊
    • 如果位置不對,修改 setup_manual_positions.py 中的 MANUAL_POSITIONS
  2. 調整識別參數

    • 檢查 image_recognition.py 中的圖像預處理參數
    • 可能需要調整亮度閾值或 OCR 配置
  3. 檢查圖片清晰度

    • 確保遊戲視窗清晰可見
    • 避免視窗被其他程式遮擋

問題:無法發送按鍵

  • 確保遊戲視窗處於活動狀態(未被其他視窗遮擋)
  • 檢查是否有其他程式阻擋鍵盤輸入
  • 嘗試以系統管理員身分執行腳本
  • 如果使用 win32api 無效,腳本會自動嘗試使用 pyautogui

問題:移動策略不佳

  • 可以在 game_logic.pyevaluate_move() 函數中調整權重參數
  • 根據實際遊戲表現,增加或減少某些指標的權重

注意事項

  • 首次使用前必須校準格子位置,否則識別會不準確
  • 建議在遊戲視窗清晰可見時運行腳本
  • 可以隨時按 Ctrl+C 停止腳本
  • 如果遊戲更新導致視窗大小或位置改變,需要重新校準

授權

本專案僅供學習和研究使用。

About

Doomsday: Last Survivors Gunfire Gala Autoplay

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages