2010-08-03 143 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()會派上用場,當你想找出哪些網鼠標點擊在做。