如何确定哪个玩家在TicTacToe赢得比赛?

时间:2015-06-10 22:07:40

标签: java

我无法弄清楚如何检查哪个玩家,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);
    }
}

1 个答案:

答案 0 :(得分:0)

最简单的方法是在每次转弯后检查所有8个获胜位置--3个水平,3个垂直和2个对角线。

也许为XOButton提供一个getter方法,在TicTacToe类的方法中调用? 然后可以在按钮的actionlistener中触发它。