在我的 TicTacToe 游戲中,我有一種方法可以檢查是否有人贏了,而且效果很好。但是檢查是否有平局的方法不起作用。首先它檢查是否有贏家,如果沒有,它應該檢查是否有平局。一旦每 9 個位置在該領域中進行,“它是平局”的訊息就不會出現。我找不到錯誤。
for (int i = 0; i < 5; i ) {
System.out.println("welcome!");
playerMove(gameBoard);
if (checkIfCurrentPlayerIsWinner(gameBoard, 'X')) {
System.out.println("Player won the game!");
playerScore ;
break;
if (checkDraw(gameBoard)) {
System.out.println("It's a draw!");
tieScore ;
break;
}
private static boolean checkDraw(char[][] gameBoard){
for(int i = 1; i< 10; i ){
if(getFieldContent(gameBoard, i) != ' '){
return false;
}
}
return true;
}
public static char getFieldContent(char[][] gameboard, int fieldNumber) {
switch (fieldNumber) {
case 1:
return gameboard[0][0];
case 2:
return gameboard[0][2];
case 3:
return gameboard[0][4];
case 4:
return gameboard[2][0];
case 5:
return gameboard[2][2];
case 6:
return gameboard[2][4];
case 7:
return gameboard[4][0];
case 8:
return gameboard[4][2];
case 9:
return gameboard[4][4];
}
return ' ';
}
uj5u.com熱心網友回復:
我在這里推斷gameboard
最初包含所有空格,并且您出于某種原因決定僅在其偶數索引中存盤移動。我還會注意到您的代碼缺少一些右大括號 ( }
s)。請在將來只發布編譯的代碼,或者如果編譯是您的問題,請指出這樣的問題。
在任何情況下,checkDraw
回報率false
,如果所有的測驗指標gameboard
是不是 ' '
和true
其他。似乎您要測驗的內容正好相反,即整個棋盤都已播放,即不存在非空間單元格。在這種情況下,checkDraw
將類似于以下內容:
private static boolean checkDraw(char[][] gameBoard) {
for(int i = 1; i < 10; i ) {
// note that the test is now == instead of !=
if(getFieldContent(gameBoard, i) == ' ') {
return false;
}
}
// no non-space cells were found, so the entire board has been
// played out, resulting in a draw, provided that a separate
// winner check has already been conducted
return true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/319041.html