十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這篇文章給大家分享的是有關(guān)使用python寫(xiě)游戲腳本的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
想必大家都喜歡玩游戲吧,現(xiàn)在游戲市場(chǎng)是非?;鸨涂捎^的,不少程序員都紛紛涌入游戲公司,我們學(xué)習(xí)python其實(shí)也可以作為寫(xiě)游戲腳本的,不清楚的小伙伴可以來(lái)看下了哦~
以楚留香的電腦版為例,記錄腳本的編寫(xiě)之路吧。
因?yàn)橹饕螒蚨荚趙indows跑,沒(méi)什么好說(shuō)的,第一步應(yīng)該是獲取窗口句柄。
在按鍵精靈幫助下,我們知道了游戲窗口句柄的類(lèi)名和名字分別為"Messiah_Game",“楚留香”。
利用win32gui的函數(shù),獲取到窗口句柄,并稍微調(diào)整一下我們理想的大小。
import win32con import win32gui import win32api hwnd=win32gui.FindWindowEx(0,0,"Messiah_Game","楚留香") win32gui.SetForegroundWindow (hwnd) if(win32gui.IsIconic(hwnd)): win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 300,200,1200,800,win32con.SWP_SHOWWINDOW)
這樣就完成對(duì)窗口的激活和尺寸,位置設(shè)定了。
接下來(lái)我們先做一個(gè)模塊的功能,比如自動(dòng)擺攤購(gòu)買(mǎi),因?yàn)槎擞文J胶褪钟文J綌[攤位置不同,我們首先確定為端游模式的坐標(biāo)。
自動(dòng)購(gòu)買(mǎi)第一步,首先是鼠標(biāo)能移動(dòng)到‘’藏寶閣‘’圖標(biāo)上
然后我們關(guān)注我們需要搶購(gòu)的東西,再拿他與我們需求的價(jià)格做對(duì)比,如果小于我們理想的價(jià)格,則讓腳本自動(dòng)購(gòu)買(mǎi)。
所以模擬鍵盤(pán)鼠標(biāo)的操作和價(jià)格識(shí)別就顯得尤為重要。以下為關(guān)注界面,每點(diǎn)擊一次關(guān)注就會(huì)刷新,似乎有點(diǎn)擊事件間隔限制。
'''我們希望腳本是在端游模式跑起來(lái)的,方便測(cè)試,先默認(rèn)一個(gè)Mode為端游模式,后期可以設(shè)置一個(gè)檢查模式功能''' Mode='端游模式' if(Mode=='端游模式'): win32api.SetCursorPos([557, 584]) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
啟動(dòng)腳本后,發(fā)現(xiàn)鼠標(biāo)雖然移動(dòng)成功,但是單擊命令似乎只能在游戲之外的窗口才會(huì)執(zhí)行?
為什么呢?
這是由于游戲屏蔽了系統(tǒng)API提供的模擬輸入,包括鍵盤(pán)鼠標(biāo)的模擬操作都不會(huì)生效。
看起來(lái)事情并不簡(jiǎn)單。
那怎么辦?如果你學(xué)習(xí)也迷茫??梢匀バ【幍腜ython交流.裙 :一久武其而而流一思(數(shù)字的諧音)轉(zhuǎn)換下可以找到了,里面有新Python教程項(xiàng)目
別急,我們可以模擬鍵盤(pán)鼠標(biāo)驅(qū)動(dòng)的硬件操作。
以下理一下我們思路
目的:我們希望模擬鍵盤(pán)和鼠標(biāo)的操作。
可以使用方式或庫(kù):
l pyinput
l autopy
l win32api
l winio
l vb類(lèi)似于按鍵精靈的模式
l 前面三種已經(jīng)證明不可行,因?yàn)槎际莂pi層面的操作,一定都會(huì)被游戲系統(tǒng)屏蔽。關(guān)于第四種可以實(shí)現(xiàn)IO驅(qū)動(dòng)的模擬介紹winio但是進(jìn)入github查看說(shuō)明文檔發(fā)現(xiàn):也就是說(shuō),winio的python接口還不支持win10,其他語(yǔ)言倒是可以支持,但是我們的代碼不就前功盡棄了嗎?因此聯(lián)想到可以使用vb的按鍵精靈模式來(lái)實(shí)現(xiàn)模擬輸入。在這里我們并不是要推翻整個(gè)代碼重寫(xiě),更不是把語(yǔ)言換成vbscript,我們可以通過(guò)調(diào)用按鍵精靈某些插件實(shí)現(xiàn)模擬的鍵盤(pán)鼠標(biāo)輸入。今天就分析到這里,下一篇我們來(lái)講講怎么使用python調(diào)用vb腳本實(shí)現(xiàn)鍵盤(pán)鼠標(biāo)的dx游戲模擬輸入吧。
感謝各位的閱讀!關(guān)于使用python寫(xiě)游戲腳本的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!