2017-05-23 98 views
1

您好StackOverflow上,使用.getPixelColor與機器人類

我目前正在創建Java中的排序測試迷宮遊戲和我進行了僅使用黑色和白色的顏色在Photoshop簡單的地圖。我希望我的角色不能穿過這些黑色區域,所以我決定使用AWTRobot的「.getPixelColor()」方法。但是,它似乎沒有工作。這裏是我的代碼:

switch(keyCode1) { 
     case KeyEvent.VK_UP: 
      thomasY -= 7; 
      thomasLabel.setLocation(thomasX, thomasY); 
       break; 
     case KeyEvent.VK_DOWN: 
      System.out.println("Color: " + robot.getPixelColor(thomasX + frame.getX(), thomasY+ frame.getY() + thomasLabel.getHeight() + 1)); 
      if (robot.getPixelColor(thomasX + frame.getX(), thomasY + frame.getY() + thomasLabel.getHeight() + 1) == Color.BLACK) 
      { 
       System.out.println("At Wall!"); 
      } 
      thomasY += 7; 
      thomasLabel.setLocation(thomasX, thomasY); 
       break; 
     case KeyEvent.VK_LEFT: 
      thomasX -= 7; 
      thomasLabel.setLocation(thomasX, thomasY); 
      thomasLabel.setIcon(imageThomas); 
       break; 
     case KeyEvent.VK_RIGHT : 
      thomasX += 7; 
      thomasLabel.setLocation(thomasX, thomasY); 
      thomasLabel.setIcon(imageThomasRight); 
       break; 
    } 

這是我的性格,我的移動代碼,你可以看到,當用戶按下向下箭頭,它會嘗試並顯示它在像素的顏色。但是,它似乎沒有正確註冊,在特定位置顯示不同的顏色或錯誤的顏色。有人可以幫助我做到這一點嗎?

回答

0

兩個問題:

1)Color.BLACK與α-分量等於255 AWTRobot定義正在讀取在屏幕上,並且可以或可以不返回阿爾法分量。你必須檢查。

2)由AWTRobot返回的顏色不一定代表Object,表示AWT庫內部的顏色「黑色」的實例。你正在檢查身份;你需要檢查對象內容的平等性。

Color c1 = new Color(0,0,0); 
Color c2 = new Color(0,0,0); 

if (c1 == c2) { 
    System.out.println("Will never get here"); 
} 

if (c1.equals(c2)) { 
    System.out.println("The colours (including alpha) are the same."); 
}