如何检测绘制的线是否与图像中的黑色像素相交或接触?

时间:2016-05-24 09:54:26

标签: java swing

我正在用Java制作一个基本的迷宫游戏。我使用Graphic的drawImage方法将迷宫的简单黑白png图像加载到JPanel上。

我需要知道我在JPanel上绘制的线条(代表某人经过迷宫的路径)是否会触及迷宫的墙壁(也就是黑色像素线)。我已经知道了我要绘制的线的起点和终点,我想我可以找到所有黑色像素的位置(代表墙壁)。

我正在考虑在迷宫图像中创建一个包含所有黑色像素的数组,然后根据每个黑色像素的位置创建一个小矩形数组,然后测试初始线是否与任何黑色像素相交矩形。

有更简单/更有效的方法吗?有没有办法在迷宫中创建黑线的地图?

以下是我的代码中负责下图的部分。

public class TurtlePlane extends JPanel
{
    private TurtleController myTurtleController;
    private BufferedImage myMaze;
    private BufferedImage myMazeExplorer;

    public TurtlePlane() throws IOException{
        setLayout (null);
        setBorder( BorderFactory.createLoweredBevelBorder() );
        setBackground( Color.decode( "0xEDFFED" ) );
        setPreferredSize( new Dimension( 800, 800 ) );

        myMaze = ImageIO.read(new File("src/mazeforkids/Mazeforkids.png"));
        myMazeExplorer = ImageIO.read(new File("src/mazeforkids/FlyingKappa.gif"));
    }

    public void drawPlane(){
        repaint();
    }

    public void paintComponent( Graphics g ){
        super.paintComponent( g );

        //The Turtle object stores the x and y coordinates of the maze explorer image
        Turtle t = new Turtle(12, 753);

        g.drawImage(myMaze, 0, 0, null);//loads the image of the maze onto the JPanel
        myTurtleController.getTurtleProgram().execute( t );//updates the coordinates of the maze explorer image
        g.drawImage(myMazeExplorer, t.getX(), t.getY(), null);//loads the image of the maze explorer onto the JPanel
    }
}

Maze game

1 个答案:

答案 0 :(得分:-1)

您可以使用java.awt.Robot。它有一种方法可以获取屏幕上任何位置的像素颜色。您如何实现这一点取决于您。