昨天把叉叉辨識出來之後,接下來就要去點叉叉把廣告關掉,這邊就會開始用pynput套件,以下程式碼都寫在game_controller.py
首先引入需要的套件
from pynput.mouse import Listener, Controller, Button
from time import sleep
寫一個Controller物件
class Mouse_Controller(Controller):
def __init__(self) -> None:
Controller().__init__()
我本來以為這邊會寫入甚麼方法的,結果就這樣而已了(X
再來去Game_Controller()新增方法
def mouse_click(self, x, y):
self.mouse.position = (x, y)
sleep(0.1)
self.mouse.click(Button.left, 1)
print(self.mouse.position)
雖然說很建議用單元測試,但懶一點的話就在下方寫一個__main__的方法就好了
if __name__ == '__main__':
g = Game_Controller(None)
g.mouse_click(1920, 1080)
這邊的1920*1080就是我螢幕的尺寸,滑鼠會移到右下角點擊
最後回到close_ad.py來引用這個方法
def handle_gui_msg(self, msg):
global gui, cont
if msg == 'set_range':
cont.game_listen()
elif msg == 'cross_detect':
position = self.cross_detect()
if position != None:
cont.mouse_click(position[0] * self.window_rate_x, position[1] * self.window_rate_y)
gui.cross_detect_finish()
最終結果如下
https://youtu.be/3HRIQekwZOw
影片中可以看到,滑鼠沒點擊在叉叉上的位置,大概是位置的規劃沒有調整好...
這個功能就做到這邊了,畢竟這也不是主題的核心,接下來就要針對方塊來辨識了
以下為程式碼連結
https://github.com/bsiotmceh-Tobey/detect_match
參考資料:
https://pynput.readthedocs.io/en/latest/mouse.html#controlling-the-mouse