0

您好,我是新来的,我正在制作一个小井字游戏,其中我制作了一个 gui,如下所示:

public static void main(String[] args) {

    Frame frame1 =new Frame("TickTacToe");
    frame1.setLayout(null);
    frame1.setBounds(250,150,500,500);
    frame1.setVisible(true);
    frame1.addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e){
            System.exit(0);
        }
    });

    final Button button11 = new Button("");
    button11.addActionListener(null);

    final Button button12 = new Button("");
    button11.addActionListener(null);

    final Button button13 = new Button("");
    button11.addActionListener(null);

    final Button button21 = new Button("");
    button11.addActionListener(null);

    final Button button22 = new Button("");
    button11.addActionListener(null);

    final Button button23 = new Button("");
    button11.addActionListener(null);

    final Button button31 = new Button("");
    button11.addActionListener(null);

    final Button button32 = new Button("");
    button11.addActionListener(null);

    final Button button33 = new Button("");
    button11.addActionListener(null);


    button11.setBounds(100, 100, 80, 70);
    button12.setBounds(100, 200, 80, 70);
    button13.setBounds(100, 300, 80, 70);
    button21.setBounds(200, 100, 80, 70);
    button22.setBounds(200, 200, 80, 70);
    button23.setBounds(200, 300, 80, 70);
    button31.setBounds(300, 100, 80, 70);
    button32.setBounds(300, 200, 80, 70);
    button33.setBounds(300, 300, 80, 70);

    frame1.add(button11); 
    frame1.add(button12); 
    frame1.add(button13); 
    frame1.add(button21); 
    frame1.add(button22); 
    frame1.add(button23); 
    frame1.add(button31); 
    frame1.add(button32);
    frame1.add(button33); 
}

我想将动作侦听器添加到按钮,但不是在这个 void 理想情况下甚至是不同的类,所以我可以创建一种方法来运行函数循环,例如播放器轮换器,如果它是第一个,它将按钮文本设置为 x o 如果它是其他的,我或多或少知道我需要使用的代码,但我想不出一种方法来使用 anzwhere 的 gui,而不是它自己的 void。我不太清楚我在寻找什么,所以非常感谢任何帮助。

4

1 回答 1

1

首先,这个程序结构非常糟糕。从外观上看,我可以告诉您来自诸如 C 或 Basic 之类的过程编程语言。Java 完全是关于面向对象的架构。Java 可以按程序运行,但它并非如此。我要开始的第一件事是退出 main()。这是一个很好的方法:

public class TicTacToe
{
    public TicTacToe()
    {

    }

    public static void main(String args[])
    {
        new TicTacToe();
    }
}

TicTacToe 可能看起来很简单,但它同时发生了很多事情,人们正在点击按钮,所以你需要 ActionListeners,你需要在每次移动后更新屏幕的 UI,你需要检查以确保每次移动都是有效的,您需要在每一步之后检查是否获胜,等等。这在 main 内部几乎是不可能的。

将任何类型的组件直接添加到 JFrame 中通常是一个坏主意。最好将 JPanel 放在 JFrame 中,然后将组件添加到 JPanel。

尝试为您的游戏制作类结构。这是我要做的:

TicTacToe.class --> Checks rules, checks for wins and starts and stops game
Player.class (implements ActionListener) --> Listens for each Player's input
Board.class (extends JPanel) --> this will display the components for the game
Computer.class (extends Player) --> if you wanted to create an AI this is where you would do so

如果我是你,我会读一本关于 Java 游戏开发的书或上一堂课。如果您想精通 Java,这是一个很好的起点。你错过了很多重要的知识,即使是做一个简单的任务,比如制作一个井字游戏,你也需要这些知识。

于 2012-07-07T15:19:08.960 回答