2013-03-30 62 views
-1

我目前正在學習Swing,並且認爲製作遊戲會讓這個過程對我更有趣。我的JFrame都設置了菜單和工具欄,但現在我正在構建一個JPanel作爲遊戲區域,在這種情況下,我想創建一個網格。我可以很容易得出一個面板上有足夠的使用:如何在java中設置一個簡單的基於網格的遊戲板?

protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    g.setColor(Color.black); 
    for(int x = 0 ; x <= getWidth() ; x += 16) { 
     g.drawLine(x , 0 , x , getHeight()); 
    } 
    g.setColor(Color.black); 
    for(int y = 0 ; y <= getHeight() ; y += 16) { 
      g.drawLine(0 , y , getWidth() , y); 

但是這以後,如果我想準確地放置,並在黑板上移動圖像的用途有限。有沒有另一種方法可以繪製網格,也許使用數組?只是在我進入互動之前試圖做一個乾淨的佈局,並會很感激任何建議。謝謝!

回答

1

要麼使用您的尺寸創建圖像,要麼根據設置網格線的規則放置精靈。

//Declare some extra variables 
int coordX; 
int coordY; 
final BufferedImage image = ImageIO.read(new FileInputStream("picture.jpg")); 
PointerInfo a = MouseInfo.getPointerInfo(); 

//Call this every time the mouse is clicked. 
Point b = a.getLocation();  
int mouseClickX = (int) b.getX(); 
int mouseClickY = (int) b.getY(); 

void place() {//Make a function that establishes ranges to be clicked 
    if(mouseClickX < 16 && mouseClickX > 0 && mouseClickY < 16 && mouseClickY > 0) 
     coordX = coordY = 0; //places at top corner 
    else if()//slot 2, 3, etc... 
} 



//paintComponent method: 
g.drawImage(image, coordX, coordY, this); //set coordinates in 0,0 
除了當前的選項

如果你想讓你的遊戲元素是Swing組件,然後GridBagLayout是你在找什麼。雖然需要一些習慣,但它是Swing提供的最具自定義能力的佈局。

有關使用GridBagLayout的更多信息,請參見in this tutorial by oracle

0

您可以在GridLayout中創建一個所有JPanel的網格。如果您希望每個單元格保存可拖動的圖片,請將圖像放入ImageIcon中,圖標放在JLabel中,然後將JLabel添加到JPanel網格的其中一個單元格中。如果單元格使用GridBagLayout,則單個JLabel將默認顯示在JPanel單元的中心。要拖放,請提供JLabels MouseListeners和MouseMotionListeners。如果點擊,從JPanel中刪除JLabel並將其移動到頂層窗口的玻璃窗格中。 etc ...

相關問題