2012-03-31 161 views
3

嘿,我正在嘗試製作一個地牢爬行器,並且我被卡在地圖生成中。我想在那裏生成隨機的房間,但在我可以做所有的事情之前,我必須在屏幕上繪製地圖。我希望地圖能夠自上而下,並且幾乎是一個網格,我將在後面添加地板圖像。我的想法是創建一個JFrame並用paintComponent和一個for循環繪製一個Rectangle2D來製作一個正方形網格。這是正確的路嗎?而且我怎樣才能讓角色從一個keyListener的方塊移動到另一個方塊?Java爲遊戲繪製地圖網格

編輯:地牢爬行是一個自上而下的遊戲,你控制一個角色並將他圍繞網格移動。你殺死怪物,獲得武器和物品,升級等等。現在,我只是想知道在屏幕上打印地圖的最佳方式。我從一個網格開始,角色從正方形移動到正方形並按下箭頭鍵。然後我將繼續隨機地圖生成!

+1

如果這是一個Swing應用程序,您將需要使用[Key Bindings](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html),而不是KeyListener。你能提供關於你的實際問題的更多細節嗎?例如,我不知道什麼是「地牢爬行器」。我想我一直過着庇護的生活。 – 2012-03-31 19:58:47

回答

2

首先創建抽象層次是個好主意。從數組開始,包含關於每個單元格的信息(空,障礙物,敵人,玩家,物品等)。

類似的東西

int[][] a={ 
    {0,0,0,0,0}, 
    {0,1,0,0,0}, //"1" - obstacle 
    {0,0,1,0,0}, 
    {2,0,1,0,0}, //for example "2" is player 
    {0,0,1,0,0} 
} 

現在只是提醒你的矩形(或圖像,這實際上看起來更好:))使用該地圖。通常每個單元應該具有相同的大小,所以只需用一些步驟繪製矩形。

+0

優秀的建議。 1 + – 2012-03-31 20:13:20

+0

因此,在使用二維數組中的鍵盤上的符號繪製地圖之後,我可以用圖片來替換符號? – user1198199 2012-03-31 20:15:39

+0

@ user1198199,不完全是「替換」。沒有必要繪製這個數組(在我的例子中被命名爲「a」)。你應該繪製你的瓷磚(或矩形)與這個數組一致。 – 2012-03-31 20:19:03

1

您需要創建BufferedImages大小以匹配您的地圖大小,獲取其Graphics對象並使用此對象繪製地圖,然後進行處理。然後,您可以輕鬆地將其顯示在由JLabel擁有的ImageIcon中或JPanel的paintComponent(...)方法中。