2010-04-03 70 views
2

我正在用Java + Swing創建一個簡單的迷宮遊戲。遊戲在屏幕上繪製一個隨機迷宮,在中間放置一個圖形,然後玩家可以通過用箭頭鍵移動圖形來找到出路。至於現在,我使用普通背景,並用Graphics.drawLine()繪製迷宮的牆。我有一個.gif文件中的圖形的自定義圖片,我將其加載爲BufferedImage對象。在簡單的Java Swing遊戲中使用哪些容器/圖形組件?

但是,我希望玩家一次只能看到迷宮的一部分,隨着玩家的移動,屏幕應該跟隨遊戲中的人物。我打算通過在創建完整的迷宮時創建一個Image對象來完成此操作,然後在圖形的當前位置周圍「切割」一個正方形並使用Graphics.drawImage()顯示此對象。雖然我是Swing的新手,但我無法弄清楚如何在迷宮上方的不同位置繪製圖形,而不會重新繪製整個事物。我應該在迷宮中使用哪個容器/組件,然後爲了實現這個目標?

+0

當你說「屏幕應該按照圖」你的意思是玩家總是居中?玩家是否只能看到他們所在的迷宮的一部分,還是可以看到他們之前探索過的區域? – Nate 2010-04-04 02:54:15

+0

我的意思是玩家總是居中。玩家可以在他們周圍看到一定大小的廣場,也就是說有一個可見區域的廣場,它總是關注玩家。 – rize 2010-04-04 10:10:52

回答

3

,我無法弄清楚如何在「上面」 不同的位置繪製 數字迷宮不需要重畫 整個事情。

使用包含圖標的JLabel。然後你只需使用label.setLocation()來移動圖像。 Swing非常聰明,可以重新繪製舊區域(圖像所在的位置),然後在新位置繪製圖像。

你應該可以用一個JPanel來做到這一點。你的面板的自定義繪畫將畫迷宮。作爲兒童組件添加的標籤將被繪製在迷宮的頂部。

看看這個posting的最後一項,它包含了一個有趣的建造迷宮的方法,它還支持隨着玩家移動迷宮的滾動。

2

我認爲玻璃板是您正在尋找的組件:它是一種放置在框架上的玻璃。你在它上面畫的所有東西都會覆蓋後面的東西......所以你可以很容易地實現這個效果,而不需要關心裁剪原始圖片..見here