我正在用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
}
}
答案 0 :(得分:-1)
您可以使用java.awt.Robot
。它有一种方法可以获取屏幕上任何位置的像素颜色。您如何实现这一点取决于您。