java - 我的 tictactoe 游戏中的每个按钮都有相同的代码。如何缩短这个?

标签 java swing debugging jbutton tic-tac-toe

这个 tictactoe 程序是一个 2 人游戏。在我开始编码之后,我制作的 GUI 是框架和按钮。实际上,我的程序正在使用这种编码。

private String letter= " ";
private int count= 0;


    private void btn7ActionPerformed(java.awt.event.ActionEvent evt) {                                     
        count++;
                if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){

                letter = "X";

                } else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){

                letter = "O";

                }

        if(evt.getSource() == btn1){

                        btn1.setText(letter);

                } else if(evt.getSource() == btn2){

                        btn2.setText(letter);

                } else if(evt.getSource() == btn3){

                        btn3.setText(letter);

                } else if(evt.getSource() == btn4){

                        btn4.setText(letter);

                } else if(evt.getSource() == btn5){

                        btn5.setText(letter);

                } else if(evt.getSource() == btn6){

                        btn6.setText(letter);

                } else if(evt.getSource() == btn7){

                        btn7.setText(letter);

                } else if(evt.getSource() == btn8){

                        btn8.setText(letter);

                } else if(evt.getSource() == btn9){

                        btn9.setText(letter);




    }         
    }                                    

    private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {                                     
    count++;
                if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){

                letter = "X";

                } else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){

                letter = "O";

                }

        if(evt.getSource() == btn1){

                        btn1.setText(letter);

                } else if(evt.getSource() == btn2){

                        btn2.setText(letter);

                } else if(evt.getSource() == btn3){

                        btn3.setText(letter);

                } else if(evt.getSource() == btn4){

                        btn4.setText(letter);

                } else if(evt.getSource() == btn5){

                        btn5.setText(letter);

                } else if(evt.getSource() == btn6){

                        btn6.setText(letter);

                } else if(evt.getSource() == btn7){

                        btn7.setText(letter);

                } else if(evt.getSource() == btn8){

                        btn8.setText(letter);

                } else if(evt.getSource() == btn9){

                        btn9.setText(letter);

是的,它确实有效,但我对这些代码的问题是我需要将代码放在每个按钮中,例如button7,button1(这些只是我的按钮的例子)是代码是按钮执行的 Action 。

我只想要每个按钮执行一个命令,我不想在每个按钮中复制粘贴,因为它们是相同的代码。我认为有一个代码可以做到这一点,你怎么看?请帮忙!

最佳答案

我真的不知道你是如何尝试解决这个游戏逻辑的,尽管你的代码可以压缩成这种形式:

int count = -1;
String letter = "";  
JButton[] button = new JButton[9];  // These three being your Instance Variables
for (int i = 0; i < 9; i++, counter++)
{
    final int counter = i;
    button[i] = new JButton("");
    button[i].addActionListener(new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent ae)
        {
            count++;
            if (count % 2 != 0)
                letter = "X";
            else
                letter = "O";
            button[counter].setText(letter); 
        }
    });
}

关于java - 我的 tictactoe 游戏中的每个按钮都有相同的代码。如何缩短这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13151936/

相关文章:

debugging - 在 WebLogic 中启用 SSL 调试

java - JButton 忽略指示的大小

java - jps进程是JVM进程吗?

Java BeautyEye 外观和感觉是空的 JMenuBar 项目

java - 使用 JOGL 进行全屏 Swing

c++ - 数据断点会影响Visual Studio中编译的代码吗?

ios - 如何在实际设备上调试 Apple Watch 应用程序?

java - 扩展 RequestMappingHandlerMapping 以注册备用 URL 模式

java - Spring Cloud Config Server 也可以将配置更新推送到远程 git 存储库吗?

java - 从 JTextField 中删除添加的边框并使其恢复正常