2015-04-02 64 views
0

我想創建一個使用二維數組來顯示遊戲佈局的遊戲。Java二維數組支持網格來創建遊戲板

我竭力要改變一個int到JButton與取決於什麼號碼在網格顯示分配給它一個不同的圖像:

private void PlayPanel() { 
    try 
    { 
     iconBlank=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("white32x32.jpg"))); 
    } 
    catch (Exception e) 
      { 
       System.err.println("Blank Icon ImageIcon" +e); 
      } 
    try 
    { 
     iconSand=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sand.jpg"))); 
    } 
    catch (Exception e) 
      { 
       System.err.println("Sand Icon ImageIcon" +e); 
      } 
     try 
    { 
     iconBall=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sand60x60.png"))); 
    } 
    catch (Exception e) 
      { 
       System.err.println("Ball Icon ImageIcon" +e); 
      } 
     try 
    { 
     iconEnd=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sandstone.jpg"))); 
    } 
    catch (Exception e) 
      { 
       System.err.println("End Icon ImageIcon" +e); 
      } 



pPlayScreen =new JPanel(); 
    pPlayScreen.setPreferredSize(new Dimension(550,520)); 
    pPlayScreen.setBorder(BorderFactory.createRaisedBevelBorder()); 
    pPlayScreen.setBackground(Color.white); 
    pPlayScreen.setLayout (new GridLayout (13,16)); 

int[][] playButtons = { 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 }, 
{ 3, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } 
}; 


    for (int rows = 0 ; rows < 16 ; rows++) 
{ 
for (int cols = 0 ; cols < 13 ; cols++) 
{ 
if(playButtons [rows][cols]==0){ 
// ??? 
} 
playButton [rows] [cols] = new JButton(); 
playButton [rows] [cols].addActionListener (new Play()); 

pPlayScreen.add (playButton [rows] [cols]); 
pMain.add(pPlayScreen); 

} 
}  
} 
+0

你的問題是什麼? – 2015-04-02 12:24:40

回答

0

您不能分配一個JButton成int數組。它需要是一個對象數組才能夠存儲整數和JButton

0

我建議採取更面向對象的方法。您無法將Button轉換爲int。

嘗試使用MVC(模型,視圖,控制器),然後您可以使用一些包含2D int數組的對象作爲模型,並通過顯示您喜歡的按鈕類型來解釋此數組。該模型。

0

考慮製造具有兩個JButton,並INT屬性的自定義類,像這樣......

public class MyButton { 

    private int n; 
    private JButton button; 

    // Constructor 
    public MyButton() { 

    } 

    // Accessors and mutators 
    private void setN(int n) 
     this.n =n; 
    } 

    private int getN() { 
     return this.n; 
    } 

    private void setButton(JButton button) { 
     this.button = button; 
    } 

    private JButton getButton() { 
     return this.button; 
    } 
} 

然後你就可以通過創建一個新myButton的對象來訪問它,然後有一個數組列表他們像這樣...

ArrayList<MyButton> buttons = new ArrayList<MyButton>(); 

然後你可以做你需要的東西。這是OOP和Java類功能的美妙之處。這幾天我很想念這個JavaScript。大聲笑。希望這有助於... :)