你好,我是新来的,我正在制作一个小的tictactoe游戏,我已经制作了如下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);
}
我想在按钮中添加动作侦听器,但不是在这个虚拟空间中甚至是一个不同的类,所以我可以创建一种方法来运行一个循环的功能,如玩家转换器,如果是转一,它将设置按钮文本到x和o,如果它是其他我知道更多orless我需要使用的代码,但我无法找到一种方法来使用gui从其他地方而不是它自己的空白。我不太清楚我在寻找什么,所以任何帮助都非常感谢。
答案 0 :(得分:1)
首先,这个程序结构非常糟糕。从它的外观我可以告诉你来自过程编程语言,如C或Basic或类似的东西。 Java完全是面向对象的体系结构。 Java可以在程序上运行,但它并不意味着。我要开始的第一件事是离开main()。这是一个很好的方法:
public class TicTacToe
{
public TicTacToe()
{
}
public static void main(String args[])
{
new TicTacToe();
}
}
TicTacToe可能看起来很简单,但它有很多事情在进行,人们点击按钮所以你需要ActionListeners,你需要在每次移动后更新屏幕的UI,你需要检查以确保每一步是有效的,你需要在每次搬家后检查一下胜利还有更多。这几乎是不可能在主内部做的。
将任何类型的Component直接添加到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,这是一个很好的起点。你缺少了很多关键知识,你需要做一些简单的任务,比如做一个TicTacToe游戏。