我正在用Java制作井字游戏,但遇到了问题。每当玩家1将其令牌“ X”放置在地图上的任何地方的两个位置时,他们总是赢。我不太确定如何解决此问题。任何帮助,将不胜感激。
这是我到目前为止所做的:
public class PlayTicTac {
private boolean wonDiagonal( int player)
{
boolean answer = false;
if (
((board[0][0] + board[1][1] + board[2][2]) == player * 3) || ((board[0][2] + board[1][1] + board[2][0]) == player * 3)
)
{
answer = true;
}
else {
answer = false;
}
return answer;
}
private boolean wonStraightLines( int player)
{
boolean answer = false;
if (
((board[0][0] + board[0][1] + board[0][2]) == player * 3) ||
((board[1][0] + board[1][1] + board[1][2]) == player * 3) ||
((board[2][0] + board[2][1] + board[2][2]) == player * 3) ||
((board[0][0] + board[1][0] + board[2][0]) == player * 3) ||
((board[0][1] + board[1][1] + board[2][1]) == player * 3) ||
((board[0][2] + board[1][2] + board[2][2]) == player * 3)
)
{
answer = true;
}
else {
answer = false;
}
return answer;
}
public boolean win(int player)
{
boolean answer = false;
if (wonStraightLines(player) || wonDiagonal(player)) {
answer = true;
}
else {
answer = false;
}
return answer;
}
}
我不确定您的播放器变量是什么,或者如何将标记放置在板上。在我的井字游戏代码中,我使用以下代码进行获胜检测(尽管它在Python中)。当玩家“ X”将一块放在Corordinates(0,1)我从board[0][1] = ''
更改为board[0][1] == 'X'
。
def detect_win(board):
for marker in ['X', 'O']:
if (board[0][0] == board[0][1] == board[0][2] == marker) or
(board[1][0] == board[1][1] == board[1][2] == marker) or
............:
return True
return False