簡體   English   中英

Java Robot類鼠標移至特定像素的位置(鼠標單擊一種顏色)

[英]Java Robot class mouse move to position of a specific pixel (Mouse click a color)

如何找到正在更改坐標的顏色的位置,並且在確定后需要單擊該顏色。

該程序的目的是完成游戲中的任務,要求單擊不同的顏色,而這些顏色並不總是在同一位置。

執行程序5秒鍾后,代碼當前獲得鼠標坐標的顏色


public class RobotColorClick 
{

    public RobotColorClick () throws AWTException, IOException, InterruptedException 
    {
        Robot robot = new Robot();

        //Delay 5 seconds
        robot.delay(5000);        

        //Gets color (value of red,green,blue) from the mouse position after 5 seconds 
        Color color = robot.getPixelColor( MouseInfo.getPointerInfo().getLocation().x 
                , MouseInfo.getPointerInfo().getLocation().y);

        //Delay 3 seconds
        robot.delay(3000);

        //Mouse moves to X and Y then right click
        //Problem! How to set X and Y to position color coordinates, position will change
        robot.mouseMove(x, y);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);

    }


    public static void main(String[] args) throws AWTException, IOException, 
                InterruptedException 
    {
        new RobotColorClick ();
    }
}

您很可能需要拍攝屏幕快照圖像,然后從原始位置螺旋出(假設“顏色”沿一條連續路徑而不是跳來跳去),然后將該像素的顏色與所需的顏色進行比較。 確定后,執行mouseMove(newX, newY) ,然后執行mousePress() / mouseRelease()方法。

如果顏色正在繼續,而不是跳來跳去,請閱讀Kevin Mangold的答案,否則,如果只是一種顏色出現在您認為的任何地方,我認為您有2個選擇(如果背景為恆定顏色):

第一個:您可以對屏幕快照進行迭代,獲取任何出現的顏色(或特定顏色)的坐標,然后使用Robot lib將其按下, 這可能會有所幫助, 並且 可以 用來截取屏幕截圖

第二個:如果您不想截屏,可以使用robot lib遍歷屏幕,並使用2個嵌套的for循環遍歷所有屏幕像素, 這可能會有所幫助

如果背景圖像不是恆定的,您可以截取屏幕截圖並將其與上一個屏幕截圖進行比較,使用robot lib壓下差異。

另外 ,在使用robot lib按下按鈕之前,我已經讀過某處內容,最好這樣做robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(1); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(1); robot.mouseRelease(InputEvent.BUTTON1_MASK); 代替這個

robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

您可以從軟件中讀取游戲記憶並獲得所需的顏色坐標,這是多余的事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM