2017-06-10 101 views
0

我正在編碼數字拼​​圖遊戲。我有9個按鈕,全部都包含在一個框架中。我的想法是:當按下一個按鈕時,它會檢查它周圍的所有按鈕。如果有一個不可見的按鈕,那個不可見的按鈕將變爲可見,並且按下的按鈕中的數字將變爲可見,並且按下的按鈕將變爲不可見。這就是我所擁有的:數字拼圖編碼

private void Btn1ActionPerformed(java.awt.event.ActionEvent evt) {          
    if (!Btn2.isVisible()) { 
     Btn2.setText(Btn1.getText()); 
     Btn2.setVisible(true); 
     Btn1.setVisible(false); 
    } else if (!Btn4.isVisible()) { 
     Btn4.setVisible(true); 
     Btn4.setVisible(false); 
     Btn1.setVisible(false); 
    } 
}          

private void Btn2ActionPerformed(java.awt.event.ActionEvent evt) {          
    if (!Btn3.isVisible()) { 
     Btn3.setText(Btn2.getText()); 
     Btn2.setVisible(false); 
     Btn3.setVisible(true); 
    } else if (!Btn1.isVisible()) { 
     Btn1.setText(Btn2.getText()); 
     Btn1.setVisible(true); 
     Btn2.setVisible(false); 
    } else if (!Btn5.isVisible()) { 
     Btn5.setText(Btn2.getText()); 
     Btn5.setVisible(true); 
     Btn2.setVisible(false); 
    } 
}          

private void Btn3ActionPerformed(java.awt.event.ActionEvent evt) {          
    if (!Btn2.isVisible()) { 
     Btn2.setText(Btn3.getText()); 
     Btn3.setVisible(false); 
     Btn2.setVisible(true); 
    } else if (!Btn6.isVisible()) { 
     Btn6.setText(Btn3.getText()); 
     Btn3.setVisible(false); 
     Btn6.setVisible(true); 
    } 
} 

private void Btn4ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn1.isVisible()) { 
     Btn1.setText(Btn4.getText()); 
     Btn1.setVisible(true); 
     Btn4.setVisible(false); 
    } else if (!Btn5.isVisible()) { 
     Btn5.setText(Btn4.getText()); 
     Btn5.setVisible(true); 
     Btn4.setVisible(false); 
    } else if (!Btn7.isVisible()) { 
     Btn7.setText(Btn4.getText()); 
     Btn7.setVisible(true); 
     Btn4.setVisible(false); 
    } 
}          

private void Btn5ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn2.isVisible()) { 
     Btn2.setText(Btn5.getText()); 
     Btn2.setVisible(true); 
     Btn5.setVisible(false); 
    }else if (!Btn4.isVisible()) { 
     Btn4.setText(Btn5.getText()); 
     Btn4.setVisible(true); 
     Btn5.setVisible(false); 
    }else if (!Btn6.isVisible()) { 
     Btn6.setText(Btn5.getText()); 
     Btn6.setVisible(true); 
     Btn5.setVisible(false); 
    }else if (!Btn8.isVisible()) { 
     Btn8.setText(Btn5.getText()); 
     Btn8.setVisible(true); 
     Btn5.setVisible(false); 
    } 
}          

    private void Btn6ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn3.isVisible()) { 
     Btn3.setText(Btn6.getText()); 
     Btn3.setVisible(true); 
     Btn6.setVisible(false); 
    }else if (!Btn5.isVisible()) { 
     Btn5.setText(Btn6.getText()); 
     Btn5.setVisible(true); 
     Btn6.setVisible(false); 
    }else if (!Btn9.isVisible()) { 
     Btn9.setText(Btn6.getText()); 
     Btn9.setVisible(true); 
     Btn6.setVisible(false); 
    } 
}          

private void Btn7ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn4.isVisible()) { 
     Btn4.setText(Btn7.getText()); 
     Btn4.setVisible(true); 
     Btn7.setVisible(false); 
    }else if (!Btn8.isVisible()) { 
     Btn8.setText(Btn7.getText()); 
     Btn8.setVisible(true); 
     Btn8.setVisible(false); 
    } 
}          

    private void Btn8ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn7.isVisible()) { 
     Btn7.setText(Btn8.getText()); 
     Btn7.setVisible(true); 
     Btn8.setVisible(false); 
    }else if (!Btn5.isVisible()) { 
     Btn5.setText(Btn8.getText()); 
     Btn5.setVisible(true); 
     Btn8.setVisible(false); 
    }else if (!Btn9.isVisible()) { 
     Btn9.setText(Btn8.getText()); 
     Btn9.setVisible(true); 
     Btn8.setVisible(false); 
    } 
}          

private void Btn9ActionPerformed(java.awt.event.ActionEvent evt) {          
    // TODO add your handling code here: 
    if (!Btn6.isVisible()) { 
     Btn6.setText(Btn9.getText()); 
     Btn6.setVisible(true); 
     Btn9.setVisible(false); 
    }else if (!Btn8.isVisible()) { 
     Btn8.setText(Btn9.getText()); 
     Btn8.setVisible(true); 
     Btn9.setVisible(false); 
    } 
}                   

它看起來很長很低效。我怎樣才能縮短它?

+0

此代碼是否按預期方式工作? –

+1

一般來說,編號變量總是不好的。使用數組或列表,而不是 –

+0

你將保持各種按鈕的收集和計算鄰接(通過圖型集合或一些基本指標的數學是否) – Rogue

回答

2

試試這個。

static void BtnAction(Button pressed, Button... neighbors) { 
    for (Button neighbor : neighbors) { 
     if (!neighbor.isVisible()) { 
      neighbor.setText(pressed.getText()); 
      neighbor.setVisible(true); 
      pressed.setVisible(false); 
      break; 
     } 
    } 
} 

private void Btn1ActionPerformed(java.awt.event.ActionEvent evt) { 
    BtnAction(Btn1, Btn2, Btn4); 
} 

private void Btn2ActionPerformed(java.awt.event.ActionEvent evt) { 
    BtnAction(Btn2, Btn3, Btn1, Btn5); 
} 

private void Btn3ActionPerformed(java.awt.event.ActionEvent evt) { 
    BtnAction(Btn3, Btn2, Btn6); 
} 

// and so on...