Python-For-Games
2024-08-18
筆記如何使用 Python 優化遊戲進行體驗的各種 Script。
偵測螢幕 RGB 是否存在
可以用於判斷畫面變化,搭配要執行特定動作,直接使用 pyautogui
進行截圖,但檢查 Pixel Color 透過 numpy
進行處理,以達到最佳效能。
每一次全畫面 (2K, 2560 x 1440) 的檢查,只需要費時約 0.1 秒。
import pyautogui
import numpy as np
import time
def check_color_in_screenshot(r, g, b):
now = time.time()
screenshot = pyautogui.screenshot()
screenshot_np = np.array(screenshot)
target_pixels = np.where((screenshot_np[:, :, 0] == r) &
(screenshot_np[:, :, 1] == g) &
(screenshot_np[:, :, 2] == b))
if target_pixels[0].size > 0:
print(f'found at {target_pixels[1][0]}, {target_pixels[0][0]}, time: {time.time() - now}')
return True
return False
將所有符合的 Pixel 以指定顏色重新繪製輪廓。
import os
import pyautogui
import numpy as np
import time
from PIL import Image
def draw_match(r, g, b, target_pixels, img_width, img_height):
image = Image.new("RGB", (img_width, img_height), "white")
pixels = image.load()
for i in range(0, target_pixels[0].size):
x = target_pixels[1][i]
y = target_pixels[0][i]
pixels[x, y] = (r, g, b)
os.makedirs("img", exist_ok=True)
image.save(f"img/{time.time()}.png")
座標偵測
pyautogui.displayMousePosition()
# 動態取得目前游標所在的座標以及 Pixel RGB