将 .getPixelColor 与机器人一起使用 class

Using .getPixelColor with Robot class

你好 Whosebug,

我目前正在 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;
    }

这是我的角色移动代码,如您所见,每当用户按下向下箭头时,它都会尝试显示其所在像素的颜色。但是,它似乎没有正确注册,在特定位置显示不同的颜色或错误的颜色。有人可以帮我正确地做到这一点吗?

两个问题:

1) Color.BLACK 定义了一个等于 255 的 alpha 分量。AWTRobot 正在阅读屏幕,可能 return 也可能不是一个 alpha 分量。你必须检查一下。

2) 由 AWTRobot 编辑的颜色 return 不一定嵌入到代表 AWT 库内部颜色 "black" 实例的 Object 中。您正在检查身份;您需要检查对象内容的相等性。

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.");
}