用 Python 自動化 Chrome Dino 遊戲
課程名稱:用 PyAutoGUI 進行螢幕自動化與 Dino 遊戲機器人設計
課程時長:2 小時
適合對象:對 Python 有基本認識,想學習自動化與電腦視覺技術的學員
課程目標:
- 了解 PyAutoGUI 的基本操作,包括滑鼠點擊與鍵盤模擬。
- 學會如何擷取螢幕像素並分析影像數據。
- 撰寫 Dino 小恐龍遊戲的自動化腳本,讓電腦自動幫助恐龍跳躍避開障礙物。
- 優化腳本,使其更穩定並能應對不同遊戲速度。
第一堂課(60 分鐘):PyAutoGUI 基礎與 Dino 遊戲偵測
目標:
- 安裝 PyAutoGUI
- 學會基本 鍵盤與滑鼠控制
- 學會 擷取螢幕顏色數據
- 初步偵測 障礙物
1.1 介紹 PyAutoGUI
PyAutoGUI 是一個強大的 Python 函式庫,可以模擬鍵盤、滑鼠與螢幕操作,常用於 自動化測試 或 遊戲機器人設計。
安裝 PyAutoGUI:
pip install pyautogui
測試簡單的滑鼠點擊與鍵盤操作:
import pyautogui import time pyautogui.click(100, 100) # 在 (100,100) 位置點擊 time.sleep(1) pyautogui.press('space') # 按下空白鍵
1.2 擷取螢幕並取得像素顏色
我們要透過 螢幕擷取技術 來偵測遊戲中的障礙物。
取得當前滑鼠座標的顏色:
import pyautogui x, y = pyautogui.position() im = pyautogui.screenshot() r, g, b = im.getpixel((x, y)) print(f"目前位置 ({x}, {y}) 的顏色是:RGB({r}, {g}, {b})")
分析 Dino 遊戲的背景與障礙物顏色
- 背景 通常是 淺色(RGB 約
(240, 240, 240)
)。 - 障礙物(仙人掌、鳥)是 深色(RGB
(<200, <200, <200)
)。
- 背景 通常是 淺色(RGB 約
1.3 基本 Dino 自動跳躍程式
利用 PyAutoGUI 偵測特定區域的顏色來控制 Dino 跳躍:
import pyautogui
import time
pyautogui.click(100, 100) # 開始遊戲
pyautogui.press('space') # 讓恐龍開始跑步
time.sleep(1)
while True:
im = pyautogui.screenshot()
hasJump = False
for x in range(250, 260, 3): # 掃描 X 軸區域
for y in range(230, 250, 3): # 掃描 Y 軸區域
r, g, b = im.getpixel((x, y))
if r < 200:
pyautogui.press('space')
hasJump = True
break
if hasJump:
break
第二堂課(60 分鐘):優化 Dino 遊戲自動化
目標:
- 讓偵測範圍更準確
- 減少 CPU 負擔,讓遊戲更穩定
- 應對遊戲加速(難度提升)
2.1 優化障礙物偵測
當恐龍速度加快,障礙物會來得更快,因此:
- 提前偵測障礙物
- 記錄障礙物寬度
- 若障礙物過寬,則 長按空白鍵
改進版程式碼:
import pyautogui
import time
pyautogui.FAILSAFE = True
pyautogui.click(100, 100)
pyautogui.press('space')
time.sleep(1)
while True:
im = pyautogui.screenshot()
detected_obstacle_width = 0
mustJump = False
for x in range(180, 280, 2): # 擴大偵測範圍
for y in range(230, 250, 5):
r, g, b = im.getpixel((x, y))
if r < 180 and g < 180 and b < 180:
detected_obstacle_width += 1
mustJump = True
break
if mustJump and detected_obstacle_width > 10: # 確保障礙物夠大
if detected_obstacle_width > 25: # 如果障礙物太寬
pyautogui.keyDown('space') # 長按跳更高
time.sleep(0.15)
pyautogui.keyUp('space')
else:
pyautogui.press('space') # 一般跳躍
break
2.2 增加延遲避免錯誤跳躍
time.sleep(0.1)
可讓恐龍避免過度跳躍:
time.sleep(0.1) # 限制跳躍頻率
2.3 測試與除錯
變更遊戲速度(使用開發者模式修改 Dino 遊戲速度)
印出 RGB 數據 來測試:
print(f"({x}, {y}) 的顏色:{r}, {g}, {b}")
課程總結
章節
內容
時長
第一堂課
PyAutoGUI 基礎、擷取螢幕顏色、簡單 Dino 自動化
60 分鐘
第二堂課
優化 Dino 偵測、避免過度跳躍、適應加速
60 分鐘
學習成就: ✅ 學會 PyAutoGUI 的滑鼠、鍵盤控制
✅ 學會如何擷取螢幕顏色
✅ 撰寫 Dino 遊戲機器人並優化其效能
這堂課程結束後,學員將能夠獨立開發 Dino 遊戲自動化機器人,並學習如何運用 PyAutoGUI 進行更多自動化應用!
沒有留言:
張貼留言