2010-08-03 126 views
0

我需要关于如何移动对象(代表我的应用程序中的机器人的圆圈)的想法。需要帮助移动对象

对象将移动的表面由3行3列BufferedImage的图块组成(以数组表示)。所有瓷砖尺寸相同(160 X 160)。第3行和第3列是物体必须在其上移动的轨道导轨。这意味着对象(机器人)可以水平(向前和向后)和垂直(向上和向下)移动。 在位置[2] [2]处的平铺(请从上数开始计算,所以最上一行将是0,接下来是1等)。机器人将用于更换垂直滑轨或水平导轨。

我现在的问题是如何在交叉路口转向后将对象移动到特定的Tile。例如,机器人将在位于[2] [1]位置的瓷砖上,并且想要在交叉处转动之后移动到位置[1] [2]处的瓷砖,然后再向上移动。或者它可以在[1] [2]中,并且在交叉路口转弯后想要移动到[2] [1],然后再向后移动。

我该如何将机器人从一个瓷砖移动到另一个瓷砖?我可以通过哪种方式在BufferedImage中引用特定的Tile,以便放置该对象。所有我想要的就是给我如何做到这一点的想法。

请这是我第一次做这样的项目,所以请原谅我,如果我的问题太简单了。随着你的解释和帮助,我会从中学到更多。

非常感谢。

+1

你能不能请把你的代码的一些相关的位。就目前而言,回答你的问题将会非常困难。 – jjnguy 2010-08-03 14:16:00

+0

这些例子有帮助吗?你试图使用哪些库? http://www.java2s.com/Code/Java/2D-Graphics-GUI/Programtodrawgrids.htm http://www.java2s.com/Code/Java/2D-Graphics-GUI/AntiAlias.htm – 2010-08-03 14:21:48

+0

目前我只做了3行3列bufferedimages的网格。我没有任何具体的代码可以显示。我需要一种计算如何将对象移动到右侧单元格的方法。我希望在这里清楚。 – kap 2010-08-03 14:45:06

回答

0

为了显示您的图像,你需要找出你想要把图像放入网格的边界。我通常创建两个帮助器方法,一个将网格坐标转换为显示坐标,另一个转向另一个方向。

private Point convertGridToDisplay(int x, int y) { 
    return new Point(x * 160, y * 160); 
} 

private Point convertDisplayToGrid(int x, int y) { 
    return new Point(x/160, y/160); 
} 

convertGridToDisplay()会给你左上角的坐标,你应该画你的图像。

例如:

Point point = convertGridToDisplay(2, 1); 
graphics.drawImage(img, null, point.x, point.y) 

将在网格绘制图像(2,1)。

convertDisplayToGrid()会派上用场,当你想找出哪些网鼠标点击在做。