gpt4 book ai didi

java - Windows 检查在 Tic Tac Toe 游戏中不起作用?

转载 作者:行者123 更新时间:2023-12-01 16:56:11 24 4
gpt4 key购买 nike

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


class Tix extends JFrame {
private static final int WIDTH = 500;
private static final int HEIGHT = 500;
private boolean xTurn = true;
private Font style;
private static JButton[][] btns = new JButton[3][3];

public Tix() {
setTitle("Tix");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(WIDTH, HEIGHT);
createContents();
setVisible(true);
}

public void createContents() {
style = new Font("Comic Sans", 1, 100);
Listener listener = new Listener();

setLayout(new GridLayout(3,3));
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
btns[i][j] = new JButton();
btns[i][j].setFont(style);
btns[i][j].addActionListener(listener);
add(btns[i][j]);
}
}
}
private class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {

JButton btn = (JButton) e.getSource();

if (xTurn)
btn.setForeground(Color.RED);
else
btn.setForeground(Color.BLUE);


if (btn.getText().isEmpty()) {
btn.setText(xTurn ? "X" : "O");

if (win()) {
JOptionPane.showMessageDialog(null, "Congratulations! Player " + (xTurn ? "X" : "O") + " wins!");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
btns[i][j].setText(null);
}
}
xTurn = true;
}
else {
xTurn = !xTurn;
}
}
else {
JOptionPane.showMessageDialog(null,"Cell already clicked!");
}
}
}
public static boolean win() {

for (int i = 0; i < 3; i++)
if (btns[i][0].equals("X") && btns[i][1].equals("X") && btns[i][2].equals("X"))
return true;

for (int j = 0; j < 3; j++)
if (btns[0][j].equals("X") && btns[1][j].equals("X") && btns[2][j].equals("X"))
return true;

if (btns[0][0].equals("X") && btns[1][1].equals("X") && btns[2][2].equals("X"))
return true;

if (btns[0][2].equals("X") && btns[1][1].equals("X") && btns[2][0].equals("X"))
return true;

return false;

}

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

用于检查行的 for 循环。用于检查列的 for 循环。两个 if 语句来检查对角线。

win 方法根本不返回 true。 && 运算符有问题吗?

最佳答案

btns[i][j] 是一个 JButton 因此它永远不会等于字符串。您应该将 btns[i][0].equals("X") 形式的每个方法调用替换为 btns[i][0].getText().equals( “X”)

除此之外,您的 win 方法仅检查“X”玩家是否获胜。那么“O”玩家呢?

关于java - Windows 检查在 Tic Tac Toe 游戏中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com