pyautogui撰寫自動化腳本自動打怪

閱讀時間約 10 分鐘

如果對此有興趣的朋友可以跟我一起討論研究^^

工業革命以來自動化一直是人類很重視的一個領域

尤其繁忙的現代人

那種可以寫成程序的工作就交給自動化吧

那我這個遊戲是

https://nfl.lager.com.tw/event/nfl_ob/index.html

童話online

簡單來說就是一個old school的回合制戰鬥遊戲

裡面有一個角色叫做"闇術師"

有一個技能可以在非戰鬥狀態時直接招喚怪物出來

進入戰鬥狀態

進入戰鬥狀態之後一般來說我會選擇"黑洞爆發"

這個全體技能把怪物全部殺掉

所以整個邏輯大概如下

1.操作滑鼠點擊招怪技能圖案

2.進入戰鬥狀態後操作滑鼠點擊黑洞爆發圖案再點擊場上怪物

3.重複步驟2直到退出戰鬥狀態

ok邏輯釐清了再來就是程式碼

import pyautogui
from PIL import Image, ImageChops
import time
from PIL import Image

duration_n = 0.8

def 招怪():
while True:
print('正在招怪程序')
# 获取屏幕截图
screenshot = pyautogui.screenshot()

# 在屏幕截图中查找图案位置
img = Image.open('招怪.PNG')
location = pyautogui.locateOnScreen(img)

# 如果找到了图案
if location is not None:
# 计算图案中心点坐标
center_x, center_y = pyautogui.center(location)

# 点击图案中心点
pyautogui.click(center_x, center_y,duration=duration_n)

# 等待一段时间,以便观察周围像素的变化(可以根据需要调整等待时间)
time.sleep(1)

# 获取新的屏幕截图
new_screenshot = pyautogui.screenshot()

# 比较两个截图的不同之处
diff = ImageChops.difference(screenshot, new_screenshot)

# 如果有明显的不同(像素不同)
if diff.getbbox():
print("跳出招怪程序")
break

上面註解很清楚

程序會根據招怪.PNG這圖案在螢幕上搜索

搜索到了之後會計算图案中心点坐标

然後点击图案中心点

後面26行以後主要是判斷是否進入戰鬥狀態

我的作法是

# 等待一段时间,以便观察周围像素的变化(可以根据需要调整等待时间)

之後比對新的螢幕截圖跟舊的螢幕截圖是否有差異

# 如果有明显的不同(像素不同)
if diff.getbbox():
print("跳出招怪程序")
break

再來定義戰鬥函數

先宣告三種怪物的圖片

和攻擊技能黑洞爆發的圖片

避免干擾所以圖像匹配都使用模糊比對

接著進入while 迴圈

持續搜索三種怪物的圖像並找到位置

然後先點擊攻擊技能再點擊該怪物位置

這過程反覆循環直到螢幕上不再出現怪物

def 戰鬥():

# 定义怪物图像文件的路径
monster_A_path = Image.open('怪物A.PNG')
monster_B_path = Image.open('怪物B.PNG')
monster_C_path = Image.open('怪物C.PNG')
黑洞爆發_path = Image.open('黑洞爆發.PNG')

# 定義模糊比對參數
confidence_threshold = 0.8

# 循环直到屏幕上不再出现(A, B, C)怪物图像
while True:

# 搜索怪物A图像
monster_a_location = pyautogui.locateOnScreen(monster_A_path,confidence=confidence_threshold)
# 搜索怪物B图像
monster_b_location = pyautogui.locateOnScreen(monster_B_path,confidence=confidence_threshold)
# 搜索怪物C图像
monster_c_location = pyautogui.locateOnScreen(monster_C_path,confidence=confidence_threshold)

# 如果找到怪物A图像
if monster_a_location is not None:
# 点击D图像
d_location = pyautogui.locateOnScreen(黑洞爆發_path,confidence=confidence_threshold)
if d_location is not None:
d_x, d_y = pyautogui.center(d_location)
pyautogui.click(d_x, d_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题
# 点击怪物A图像
a_x, a_y = pyautogui.center(monster_a_location)
pyautogui.click(a_x, a_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题

# 如果找到怪物B图像
elif monster_b_location is not None:
# 点击D图像
d_x, d_y = pyautogui.center(pyautogui.locateOnScreen(黑洞爆發_path,confidence=confidence_threshold))
pyautogui.click(d_x, d_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题
# 点击怪物B图像
b_x, b_y = pyautogui.center(monster_b_location)
pyautogui.click(b_x, b_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题

# 如果找到怪物C图像
elif monster_c_location is not None:
# 点击D图像
d_x, d_y = pyautogui.center(pyautogui.locateOnScreen(黑洞爆發_path,confidence=confidence_threshold))
pyautogui.click(d_x, d_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题
# 点击怪物C图像
c_x, c_y = pyautogui.center(monster_c_location)
pyautogui.click(c_x, c_y,duration=duration_n)
time.sleep(0.5) # 等待一段时间,避免连续点击造成问题

else:
# 如果屏幕上不再出现(A, B, C)怪物图像,退出循环
break

後續發現沒辦法正常練功

主要問題出現於滑鼠點擊跟鍵盤操作的時候沒有反應

後來跟朋友討論發現

06:30 rickyyu press都改成 keydown +keyup
06:30 rickyyu click說錯
06:30 rickyyu pyautogui 的click 功能在我那個遊戲根本不適用
06:31 rickyyu https://github.com/skywalker0803r/autohitmonster/blob/main/play2.py
06:32 rickyyu 說錯鍵盤都改用keydown keyup 
06:32 rickyyu 滑鼠改用mousedown mouseup

以下是完整的可執行無bug的新程式碼:

https://github.com/skywalker0803r/autohitmonster/blob/main/play2.py


人工智能工作經驗跟研究
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
根據泰勒定理,f(x)可以寫成右邊一長串的導數的組合 為了更好理解這個東西我們可以用python實作 首先定義f(x)和定義factorial怎麼算 然後寫泰勒定理 f(x) = f(a) + f'(a)(x-a) ....後面還有一串 注意公式往後面看其實是有規律的 例如從
一個罐頭其中高度為h,底部半徑為r,且 h/r=2 已知 容量V = 1(公升) 找到一組: h(高度) , r(底部半徑) 使得表面積最小 目的: 因表面積最小因此可以讓製造成本降低幫助企業省錢 算式如上 答案我也使用python驗證一下求出數值解 接下來換個角度跟工具
嗜賭與社會剝奪感 轉載自medium,原作者:蕭瑟寡人 華人民族性嗜賭。 這點從小時候開始,就不斷見證台灣人家庭中,不管是富有還是貧窮,親戚朋友中都人有賭癮,家裡比較沒錢的被搞到傾家蕩產需要子女還債,而家裡有錢的則是可以把祖業賭掉一大半。 而離開台灣一段時間後,才發現這種社會風氣其實是華人獨
有機會跟世界各地的人交流以後會發現: 1)天下真的只有華人還有其他被儒家士大夫文化毒害的東亞民族會覺得讀書(不是看書或求學喔)跟吃補品一樣,越吃越補,而且可以代替實作。 2)其實世界上很多地方的人不認為中國真的是強大的文明。我們現在享受到的是日本崛起後世界對東亞的一點好奇和尊重,事實上亞洲許多地
先前寫一篇:對台灣的使命感,稍微聊到台灣年輕人、海歸派、僑民和自我認同問題。 在文中我稍微有提到台灣的現狀是很難改變的,在這篇我覺得可以稍微討論一下。 過去我有幾次提到: 台灣的憲政體制和產業環境,並非以其他歐美先進國家為文化和思想基礎,反而是承襲了華人一慣的法家政府的法治和經濟管理觀念。
根據泰勒定理,f(x)可以寫成右邊一長串的導數的組合 為了更好理解這個東西我們可以用python實作 首先定義f(x)和定義factorial怎麼算 然後寫泰勒定理 f(x) = f(a) + f'(a)(x-a) ....後面還有一串 注意公式往後面看其實是有規律的 例如從
一個罐頭其中高度為h,底部半徑為r,且 h/r=2 已知 容量V = 1(公升) 找到一組: h(高度) , r(底部半徑) 使得表面積最小 目的: 因表面積最小因此可以讓製造成本降低幫助企業省錢 算式如上 答案我也使用python驗證一下求出數值解 接下來換個角度跟工具
嗜賭與社會剝奪感 轉載自medium,原作者:蕭瑟寡人 華人民族性嗜賭。 這點從小時候開始,就不斷見證台灣人家庭中,不管是富有還是貧窮,親戚朋友中都人有賭癮,家裡比較沒錢的被搞到傾家蕩產需要子女還債,而家裡有錢的則是可以把祖業賭掉一大半。 而離開台灣一段時間後,才發現這種社會風氣其實是華人獨
有機會跟世界各地的人交流以後會發現: 1)天下真的只有華人還有其他被儒家士大夫文化毒害的東亞民族會覺得讀書(不是看書或求學喔)跟吃補品一樣,越吃越補,而且可以代替實作。 2)其實世界上很多地方的人不認為中國真的是強大的文明。我們現在享受到的是日本崛起後世界對東亞的一點好奇和尊重,事實上亞洲許多地
先前寫一篇:對台灣的使命感,稍微聊到台灣年輕人、海歸派、僑民和自我認同問題。 在文中我稍微有提到台灣的現狀是很難改變的,在這篇我覺得可以稍微討論一下。 過去我有幾次提到: 台灣的憲政體制和產業環境,並非以其他歐美先進國家為文化和思想基礎,反而是承襲了華人一慣的法家政府的法治和經濟管理觀念。
你可能也想看
Google News 追蹤
RPG Battle Game 說明文件 簡介 這是一個簡單的回合制 RPG 遊戲,玩家與怪物進行戰鬥,雙方有不同的技能可以使用。遊戲目標是擊敗對手,將其生命值削減至零。 程式架構 1. Character 類別 Character 是一個基礎類別,表示遊戲中的角色,包括玩家和怪物。所有角
Thumbnail
今天要實作和體驗的是拼單字的小遊戲,類似小時候在報紙、英文童書、或著電子辭典的小遊戲,一開始都是空白,隨著使用者拼對而逐漸顯示原本的單字樣貌,直到整個單字拼出來為止。 場景: 電腦隨機從單字庫裡面撈一個單字出來。 讓使用者扮演玩家去玩拼單字的遊戲。
Thumbnail
AI之強大,認字生圖,實驗之下果真如此~
Thumbnail
來看看如何使用AI詠唱的方式,生成需要的雜誌畫面,並對比實際平面模特兒拍攝的照片,變換風格或是指定地區,來看看每一段描述的改變,會產生出什麼樣的變化。
Thumbnail
小妖問道代儲:玩家福音的最佳選擇 對於許多熱愛手遊的玩家來說,花費大量時間和精力去提升遊戲角色的等級和實力是一件相當耗時耗力的事情。 然而,現在有了小妖問道代儲服務,這一切都變得輕鬆簡單起來。 什麼是小妖問道代儲? 小妖問道代儲是一項為玩家提供的服務,旨在幫助玩家快速提升遊戲中的等級、技能和實
那麼寫下的同時,正在施展作者的專有能力,目前稱作為假設法。 人生如遊戲,遊戲如人生 曾幾何時,某些人們工作之餘的休閒娛樂,其中重要的一環,那就是打開電腦然後享受著打電動,而如今網路遊戲跟著時代的變化已走到手機遊戲,網路遊戲製造商已做不出眾所期待的著作,但作者心中對網路遊戲還耿耿於懷勿忘初衷,在此
Thumbnail
安西子 記得全台瘋抓寶可夢的情景嗎?     一群來自四方互不認識的人自動聚在某處,低著頭用手指快速按壓手機,心裡盼望能抓到心想的模偶,偶爾和旁邊同好交換心得、互通有無,有些入迷者甚至用好幾個手機架設排面,便於快速操作,及時抓取想要的魔怪
引言 在現代快節奏的生活中,手遊已經成為人們休閒娛樂的首選。 然而,有時候繁重的工作和生活壓力可能讓我們難以花費大量時間來提升遊戲中的角色實力。 這就是小妖問道代儲所應運而生的背景。 本文將帶領讀者探秘極速手遊代儲網的小妖問道代儲,揭示其中的奧秘,讓你在遊戲中更輕鬆、更有趣! 小妖問道代儲 -
Thumbnail
幾個月前,每當我桌機一開機,就會自動跳出遊戲登入畫面,沒有取消鍵,只能按右上X關掉視窗,從此每天開機都會跳出遊戲畫面,除非我進後台,把開機參數重新設定。 我當然知道這是作業軟體更新後,企業為了獲利而偷偷更改了開機參數的結果。 實相是,人間這低階法界的大部分跨國企業,早已是邪魔妖眾的傀儡。
Thumbnail
民國五十年代,碟仙和筆仙等請神遊戲曾經紅遍街頭巷尾。後來隨著政府禁止,雖有短期沒落,但到了1970年間又再次復甦。這些遊戲究竟有何魅力?又有哪些需要注意的小眉角呢?
RPG Battle Game 說明文件 簡介 這是一個簡單的回合制 RPG 遊戲,玩家與怪物進行戰鬥,雙方有不同的技能可以使用。遊戲目標是擊敗對手,將其生命值削減至零。 程式架構 1. Character 類別 Character 是一個基礎類別,表示遊戲中的角色,包括玩家和怪物。所有角
Thumbnail
今天要實作和體驗的是拼單字的小遊戲,類似小時候在報紙、英文童書、或著電子辭典的小遊戲,一開始都是空白,隨著使用者拼對而逐漸顯示原本的單字樣貌,直到整個單字拼出來為止。 場景: 電腦隨機從單字庫裡面撈一個單字出來。 讓使用者扮演玩家去玩拼單字的遊戲。
Thumbnail
AI之強大,認字生圖,實驗之下果真如此~
Thumbnail
來看看如何使用AI詠唱的方式,生成需要的雜誌畫面,並對比實際平面模特兒拍攝的照片,變換風格或是指定地區,來看看每一段描述的改變,會產生出什麼樣的變化。
Thumbnail
小妖問道代儲:玩家福音的最佳選擇 對於許多熱愛手遊的玩家來說,花費大量時間和精力去提升遊戲角色的等級和實力是一件相當耗時耗力的事情。 然而,現在有了小妖問道代儲服務,這一切都變得輕鬆簡單起來。 什麼是小妖問道代儲? 小妖問道代儲是一項為玩家提供的服務,旨在幫助玩家快速提升遊戲中的等級、技能和實
那麼寫下的同時,正在施展作者的專有能力,目前稱作為假設法。 人生如遊戲,遊戲如人生 曾幾何時,某些人們工作之餘的休閒娛樂,其中重要的一環,那就是打開電腦然後享受著打電動,而如今網路遊戲跟著時代的變化已走到手機遊戲,網路遊戲製造商已做不出眾所期待的著作,但作者心中對網路遊戲還耿耿於懷勿忘初衷,在此
Thumbnail
安西子 記得全台瘋抓寶可夢的情景嗎?     一群來自四方互不認識的人自動聚在某處,低著頭用手指快速按壓手機,心裡盼望能抓到心想的模偶,偶爾和旁邊同好交換心得、互通有無,有些入迷者甚至用好幾個手機架設排面,便於快速操作,及時抓取想要的魔怪
引言 在現代快節奏的生活中,手遊已經成為人們休閒娛樂的首選。 然而,有時候繁重的工作和生活壓力可能讓我們難以花費大量時間來提升遊戲中的角色實力。 這就是小妖問道代儲所應運而生的背景。 本文將帶領讀者探秘極速手遊代儲網的小妖問道代儲,揭示其中的奧秘,讓你在遊戲中更輕鬆、更有趣! 小妖問道代儲 -
Thumbnail
幾個月前,每當我桌機一開機,就會自動跳出遊戲登入畫面,沒有取消鍵,只能按右上X關掉視窗,從此每天開機都會跳出遊戲畫面,除非我進後台,把開機參數重新設定。 我當然知道這是作業軟體更新後,企業為了獲利而偷偷更改了開機參數的結果。 實相是,人間這低階法界的大部分跨國企業,早已是邪魔妖眾的傀儡。
Thumbnail
民國五十年代,碟仙和筆仙等請神遊戲曾經紅遍街頭巷尾。後來隨著政府禁止,雖有短期沒落,但到了1970年間又再次復甦。這些遊戲究竟有何魅力?又有哪些需要注意的小眉角呢?