新手程序员在这里尝试制作一个tic tac toe GUI游戏。我虽然坚持我的计划。我不确定如何检查两次击中同一个方格。我在我的actionListener里面想了一个if语句,说
if(button clicked = True)
{
JOptionPane.showMessageDialog((null, "ERROR", "Button already used.
Please hit again to change back", JOptionPane.ERROR_MESSAGE);
// STOP something along those lines
}
else
{
//Do nothing
}
会工作,但我无法让程序正常工作。我尝试了newTurn.getmodel()。isPressed()并且无效,现在使用我当前的代码,程序在每次移动后输出错误消息,并且更改仍然出现在板上。这是我的方法代码。任何帮助表示赞赏。
private class buttonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton newTurn = (JButton)e.getSource(); //get the particular button that was clicked
if(switchMove%2 == 0)
newTurn.setText("X");
else
newTurn.setText("O");
if(newTurn.isEnabled())
JOptionPane.showMessageDialog(null, "ERROR", "Button already used. Please hit again to change back", JOptionPane.ERROR_MESSAGE);
if(checkForWin() == true)
{
JOptionPane.showConfirmDialog(null, "Game Over.");
resetButtons();
}
switchMove++;
}
switch move只是一个int设置为0所以evens是X而O是奇数。我的if(newTurn.isEnabled())是我的问题
答案 0 :(得分:0)
这是我已解决的代码。
public void resetButtons()
{
for(int i = 0; i <= 8; i++)
{
buttons[i].setText("");
buttons[i].setEnabled(true);
}
}
private class buttonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton newTurn = (JButton)e.getSource();
if(switchMove%2 == 0)
newTurn.setText("X");
else
newTurn.setText("O");
if(newTurn.isEnabled())
newTurn.setEnabled(false);
if(checkForWin() == true)
{
JOptionPane.showConfirmDialog(null, "Game Over.");
resetButtons();
}
switchMove++;
}
在actionPerformed()方法中,我在单击按钮后将按钮设置为setEnabled(false)。然后当游戏结束时,先前禁用的按钮将通过resetButtons方法设置为setEnabled(true)。