我无法弄清楚如何检查哪个玩家,X或O赢了。我会帮助你提供任何帮助。我从synforge的在线教程中学到了如何使用这里的代码。
XOButton:
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class XOButton extends JButton implements ActionListener {
ImageIcon X, O;
byte value = 0;
/*
* 0:nothing 1:X 2:O
*/
public XOButton() {
X = new ImageIcon(this.getClass().getResource("X.png"));
O = new ImageIcon(this.getClass().getResource("O.png"));
this.addActionListener(this);
}
public void actionPerformed(ActionEvent click) {
value++;
value %= 3;
switch (value) {
case 0:
setIcon(null);
break;
case 1:
setIcon(X);
break;
case 2:
setIcon(O);
break;
}
}
}
井字游戏:
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridLayout;
public class TicTacToe extends JFrame {
JPanel p = new JPanel();
XOButton buttons[] = new XOButton[9];
public static void main(String args[]) {
new TicTacToe();
}
public TicTacToe() {
super("TicTacToe");
setSize(400, 400);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
p.setLayout(new GridLayout(3, 3));
for (int i = 0; i < 9; i++) {
buttons[i] = new XOButton();
p.add(buttons[i]);
}
add(p);
setVisible(true);
}
}
答案 0 :(得分:0)
最简单的方法是在每次转弯后检查所有8个获胜位置--3个水平,3个垂直和2个对角线。
也许为XOButton提供一个getter方法,在TicTacToe类的方法中调用? 然后可以在按钮的actionlistener中触发它。