【发布时间】:2019-09-03 19:38:05
【问题描述】:
我基本上已经准备好完成我一直在开发的井字游戏,但无法查看谁赢得了比赛。本质上,我是想看看是否有人赢了比赛,如果赢了,然后显示一条消息,说明哪个玩家赢了。
我尝试过暴力检查每个 JButton 行/列/对角线,但它似乎不起作用。顺便说一句,我将 JButtons 布置在 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”时,什么也没有发生。欢迎任何反馈/建议以提高效率。
【问题讨论】:
-
您应该将其存储在 3 x 3 矩阵中,然后检查对角线。像这样stackoverflow.com/questions/33352418/…
-
可读性建议:这里有一些重复的代码(
"X"块和"O"块。)编写一个private方法来封装这个逻辑,这样你就不必重复了它。
标签: java user-interface tic-tac-toe