python製作簡易陰陽師遊戲腳本(基礎問題篇)

正值過年的關卡,疫情嚴重,在這裏盼望武漢馬上恢復起來,武漢加油!!!

python製作簡易陰陽師遊戲腳本(代碼篇)

在一動不動的這幾天裏,受朋友的邀請寫了個陰陽師刷御魂的腳本。
因個人水平有限,希望各路大神指點

主要思路如下:

  • 對區域進行截圖
  • 將所截圖與保存的圖片進行對比
  • 控制鼠標移動到該位置並進行點擊

1.對區域進行截圖

這裏我使用的是 pyautogui庫


!!這裏遇到問題

使用PIL中的ImageGrab模塊時發現截屏時無法對全屏進行截取

!!這裏保留意見可以使用pyqt的方法對指定應用程序進行抓取


import pyautogui
def get_screen():
  # 截屏口令 保存圖片
  img = pyautogui.screenshot(region=(0,0, 1280, 720))  #截取範圍是左0,右0,1280x720的範圍
  #img = pyautogui.screenshot() 截取全屏
  img.save('E:\pyth_roject\yinyagnshi\img/screen_img.png')
  img = cv2.imread('E:\pyth_roject\yinyagnshi\img\screen_img.png', 0)
  return img

2.將所截圖與保存的圖片進行對比
這裏我使用的是CV庫中的 matchTemplate


這裏發現使用方法不同所取座標的方式不同!!需要再次進行驗證


  matchTemplate(image, templ, method[, result[, mask]]) -> result
  """
matchTemplate():
參數image:待搜索的圖像(大圖)
參數temple:搜索模板,需要和原圖一樣的數據類型且尺寸不能大於源圖像
參數result:比較結果的映射圖像,其必須爲單通道,32位浮點型圖像,如果原圖(待搜索圖像)尺寸爲W*H,而temple尺寸爲w*h,則result尺寸一定是
   (W-w+1)*(H-h+1)
參數method:指定匹配方法,有如下幾種:
   CV_TM_SQDIFF:平方差匹配法
   CV_TM_SQDIFF_NORMED:歸一化平方差匹配法
   CV_TM_CCORR:相關匹配法
   CV_TM_CCORR_NORMED:歸一化相關匹配法
   CV_TM_CCOEFF:係數匹配法
   CV_TM_CCOEFF_NORMED:化相關係數匹配法
"""

參考代碼如下

import cv2 as cv
import numpy as np
 

"""
minMaxLoc()函數
作用:一維數組當作向量,尋找矩陣中最小值和最大值位置
"""
 
def match_image():
    target = cv.imread(r"2.jpg")
    temple = cv.imread(r"1.png")
    # 獲取到小圖的尺寸
    th, tw = temple.shape[:2]
    result = cv.matchTemplate(target, temple, cv.TM_SQDIFF_NORMED)
    # 返回匹配的最小座標
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
    tl=min_loc
    print(tl)
    br = (int(tl[0]) + tw, int(tl[1]) + th)
    print(br)

3.控制鼠標移動到該位置並進行點擊

使用PyMouse 模塊


!!! 安裝步驟PyMouse安裝步驟

!!!使用時發現在使用陰陽師pc端時無法進行點擊,懷疑可能陰陽師有反腳本的機制


def click(x, y):
    """輸入兩個二維列表,表示要點擊的位置的x座標,y座標"""
    m = PyMouse()
#    cmd_click = 'adb shell input tap {} {}'.format(x, y)
    m.click(x, y, 1)
 #  click(self, x, y, button=1, n=1)
    #click中button默認爲1鼠標左鍵,2鼠標右鍵,n表示鼠標點擊的次數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章