2012-05-05 47 views
0
import java.awt.*; 
import java.awt.event.InputEvent; 
import java.awt.image.BufferedImage; 

public final class test 
{ 
    private static Robot robot; 
    public static boolean clickStatus; 

    public static void leftClick (int R, int G, int B) 
    { 
      Color myColorToMatch = new Color (R, G, B); 
      BufferedImage image = robot.createScreenCapture (new Rectangle (Toolkit.getDefaultToolkit().getScreenSize())); 
      int w = image.getWidth (null); 
      int h = image.getHeight (null); 
      int[] rgbs = new int[w*h]; 
      image.getRGB (0, 0, w, h, rgbs, 0, w); 
      for (int y=0; y<h; y++) { 
       for (int x=0; x<w; x++) { 
         if (new Color (image.getRGB (x, y)).equals (myColorToMatch)) 
           robot.mouseMove(x, y); 
           robot.mousePress (InputEvent.BUTTON1_MASK); 
           robot.mouseRelease(InputEvent.BUTTON1_MASK); 
           break; 
        } 
        break; 
      } 
    }   

    public static void main(String[] args) 
    { 
      try 
      { 
        robot = new Robot(); 
      } 
      catch(Exception Error) 
      { 
        Error.printStackTrace(); 
      }    
      // dImp: 130,40,32 - 160,99,57 - 217,135,79 
      // banker: 139, 130, 129     
      boolean botLoop = true; 
      boolean bankStatus; 

      while (botLoop == true) 
      { 
        robot.delay (1000); 
        leftClick (96,96,98); 
      } 
    } 
} 

但有一個問題,我不知道如何解決它。機器人只會持續點擊鼠標所在的每一秒,而不會繼續點擊所需的像素。 有人可以幫助我嗎?我找不到錯誤機器人類 - Java

+0

什麼是無條件「打破「旁邊的內循環爲? –

+0

結束for循環。如果我不添加它,它會繼續點擊。它會通過我的屏幕尺寸1600x900 – user1304765

+1

,但外部for循環只會運行y = 0,然後中斷。對?和內部如果塊只有一行沒有大括號 –

回答

3

你不必繞mousePress括號,所以無論它仍然按下鼠標,以及其他一些問題放之色......

import java.awt.Color; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.event.InputEvent; 
import java.awt.image.BufferedImage; 

public final class fff { 
    private static Robot robot; 
    public static boolean clickStatus; 

    public static void leftClick(int R, int G, int B) { 
     Color myColorToMatch = new Color(R, G, B); 
     BufferedImage image = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
     int w = image.getWidth(null); 
     int h = image.getHeight(null); 
     int[] rgbs = new int[w * h]; 
     image.getRGB(0, 0, w, h, rgbs, 0, w); 
     for (int y = 0; y < h; y++) { 
      for (int x = 0; x < w; x++) { 
       if (new Color(image.getRGB(x, y)).equals(myColorToMatch)) { 
        robot.mouseMove(x, y); 
        robot.mousePress(InputEvent.BUTTON1_MASK); 
        robot.mouseRelease(InputEvent.BUTTON1_MASK); 
        break; 
       } 
      } 
     } 
    } 

    public static void main(String[] args) { 
     try { 
      robot = new Robot(); 
     } catch (Exception Error) { 
      Error.printStackTrace(); 
     } 
     // dImp: 130,40,32 - 160,99,57 - 217,135,79 
     // banker: 139, 130, 129 
     boolean botLoop = true; 
     while (botLoop == true) { 
      robot.delay(1000); 
      leftClick(0, 0, 0); 
      break; //no lop 
     } 
    } 
} 
+0

感謝您的幫助 – user1304765