gpt4 book ai didi

java - 如何检查某人是否在 tic tac toe gui 游戏中获胜? (java)

转载 作者:行者123 更新时间:2023-12-02 00:59:59 25 4
gpt4 key购买 nike

我基本上已经准备好了完成我一直在制作的井字棋游戏的一切,但我无法检查谁赢得了游戏。本质上,我试图查看是否有人赢得了游戏,如果赢了,则显示一条消息,说明哪个玩家赢了。

我尝试过强力检查每个 JButton 行/列/对角线,但它似乎不起作用。顺便说一句,我将 JButton 布置在 3 x 3 网格中。

if((gameButton[0].getText().equals("X") && gameButton[1].getText().equals("X") && gameButton[2].getText().equals("X"))||
(gameButton[3].getText().equals("X") && gameButton[4].getText().equals("X") && gameButton[5].getText().equals("X"))||
(gameButton[6].getText().equals("X") && gameButton[7].getText().equals("X") && gameButton[8].getText().equals("X"))||
(gameButton[0].getText().equals("X") && gameButton[3].getText().equals("X") && gameButton[6].getText().equals("X"))||
(gameButton[1].getText().equals("X") && gameButton[4].getText().equals("X") && gameButton[7].getText().equals("X"))||
(gameButton[2].getText().equals("X") && gameButton[5].getText().equals("X") && gameButton[8].getText().equals("X"))||
(gameButton[0].getText().equals("X") && gameButton[4].getText().equals("X") && gameButton[8].getText().equals("X"))||
(gameButton[2].getText().equals("X") && gameButton[4].getText().equals("X") && gameButton[6].getText().equals("X"))) {
wonLabel.setText("Player X has won!");
}

else if((gameButton[0].getText().equals("O") && gameButton[1].getText().equals("O") && gameButton[2].getText().equals("O"))||
(gameButton[3].getText().equals("O") && gameButton[4].getText().equals("O") && gameButton[5].getText().equals("O"))||
(gameButton[6].getText().equals("O") && gameButton[7].getText().equals("O") && gameButton[8].getText().equals("O"))||
(gameButton[0].getText().equals("O") && gameButton[3].getText().equals("O") && gameButton[6].getText().equals("O"))||
(gameButton[1].getText().equals("O") && gameButton[4].getText().equals("O") && gameButton[7].getText().equals("O"))||
(gameButton[2].getText().equals("O") && gameButton[5].getText().equals("O") && gameButton[8].getText().equals("O"))||
(gameButton[0].getText().equals("O") && gameButton[4].getText().equals("O") && gameButton[8].getText().equals("O"))||
(gameButton[2].getText().equals("O") && gameButton[4].getText().equals("O") && gameButton[6].getText().equals("O"))) {
wonLabel.setText("Player O has won!");
}

我期望这会输出一条关于哪个玩家获胜的消息,但是当我与 GUI 交互并故意将某个行/列/对角线全部设置为“X”或“O”时,什么也没有发生。欢迎任何可以提高效率的反馈/建议。

最佳答案

我可以建议做这样的事情,将文本存储为 boolean 数组。每次按下按钮后,将数组中的点设置为 true(如果是 X)或 false(如果是 O)。我假设您已经有一个带有 boolean 值的回合计数器,稍后会引用它。

确保这个 boolean 数组是全局的!!!

boolean[3][3] check = new boolean[3][3];

在您的 actionEventListener 中运行此操作,

public void actionPerformed (ActionEvent e){
Object source = e.getSource();
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
if (source == board[i][j], turn == true){
check[i][j] = true;
}
else{
check[i][j] = false;
}
}
}
}

在此之后,您可能可以只使用此方法,该方法在每个回合后运行,或者以您认为合适的方式运行。

private void win (){
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
int winO = 0;
int winX = 0;
for (int x = 0; x < 2; x++)
{
if (check[i][j] == false)
{
winO++;
if (check[i+x][j+x] == false)
{
winO++;
System.out.println(winO);
}
}
else if (check[i][j] == true)
{
winX++;
if (check[i+x][j+x] == true)
{
winX++;
System.out.println(winX);
}
}
if (winO == 4)
{
wonLabel.setText("Player O has won!");
break;
}
else if (winX == 4)
{
wonLabel.setText("Player X has won!");
break;
}
}
}
}
}

公平警告。这仅检查对角线!如果您想检查水平/垂直,则必须分别将 x 值添加到 i 和/或 j

可能有更有效的方法来做到这一点,但这是我能做的最好的,希望它有所帮助

关于java - 如何检查某人是否在 tic tac toe gui 游戏中获胜? (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777809/

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