我需要关于如何移动对象(在我的应用程序中代表机器人的圆圈)的想法。
对象将在其上移动的表面由3行3列(以数组表示)的BufferedImage的瓦片组成。所有瓦片的大小相同(160 X 160).The第三行和第三列是对象必须在其上移动的轨道。这意味着物体(机器人)可以水平(向前和向后)和垂直(向上和向下)移动。位置2的瓷砖(请从顶部开始计数。所以第一行是0,下一行是1,以此类推。)是一个交叉,机器人将使用它来改变垂直轨道轨道或水平轨道轨道。
我现在的问题是如何在十字路口转弯后将对象移动到特定的Tile上。例如,机器人将在位置2处的瓷砖中,并希望在转弯后移动到位置1处的瓷砖,然后进一步向上移动。或者,它可以是1,并希望在交叉转弯后移动到2,然后进一步向后移动。
如何将机器人从一个磁贴移动到另一个磁贴?我可以以哪种方式引用BufferedImage中的特定磁贴,以便放置对象。我所想要的就是给我一些想法,让我知道如何去做。
请这是我第一次做这样的项目,所以请原谅我的问题太初级了。有了你的解释和帮助,我会从中学到更多。
非常感谢。
发布于 2010-08-04 01:45:05
为了显示你的图像,你需要找出你想要放入你的图像的网格的边界。我通常创建两个辅助方法,一个用于将网格坐标转换为显示坐标,另一个用于将网格坐标转换为显示坐标。
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()会派上用场。
https://stackoverflow.com/questions/3397345
复制相似问题