iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

昨天把叉叉辨識出來之後,接下來就要去點叉叉把廣告關掉,這邊就會開始用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


上一篇
Day20 要準備棄賽了
下一篇
Day21 修正辨識位置
系列文
最近迷上了三消遊戲 那就來寫一個自動消珠程式吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言