我有一個類似下面的數組。如何在一行中找到三個相同的數字?
int[][] myArray =
{{1, 2, 3, 0, 0, 1}
{1, 0, 4, 4, 0, 1}
{1, 2, 4, 3, 4, 0}
{2, 2, 0, 0, 2, 2}
{3, 0, 0, 3, 0, 0}
{4, 2, 3, 0, 0, 0}}
它會說因爲第一列中三個1中的1而獲勝。兩個人不會贏,因爲他們不在「排」。
我想做某種勝利檢查,以便它在同一行,對角線或列中找到三個相同的數字。有點像井字遊戲,但有一個更大的網格。在我使用一組混亂的if語句和goto語句之前。 (它是用Basic編寫的。)我嘗試過使用一個系統,它從最後一個放置的部分找到了指示,其中有一些相同的指示,但它沒有正常工作。我怎樣才能以簡單和可維護的方式來做到這一點?
嘗試代碼:
private static boolean checkBoardCombinations(int[][] board, int inputX, int inputY) {
int currentPlayer = board[inputX-1][inputY-1];
boolean[][] directions = new boolean[3][3];
for(int y = 0; y >= -2; y--){
for(int x = 0; x >= -2; x--){
if(inputX+x >= 0 && inputX+x <= 7 && inputY+y >= 0 && inputY+y <= 7
&& (board[inputX+x][inputY+y] == currentPlayer)){
//System.out.printf("X: %s Y: %s", inputX+x, inputY+y);
directions[x+2][y+2] = true;
}
else{
directions[x+2][y+2] = false;
}
//System.out.printf("X: %s Y: %s B: %s,", inputX+x, inputY+y, directions[x+2][y+2]);
}
//System.out.println();
}
/*
for(int x = 0; x <= 2; x++){
for(int y = 0; y <= 2; y++){
System.out.print(directions[x][y] + " ");
}
System.out.println();
}
*/
return false;
}
ü應用什麼邏輯或粘貼代碼會更好 – Kick
待辦事項3個相同的值必須是一個接一個,還是可以分散在行,對角線或列? – halex
這些數字的範圍是什麼?他們只是個位數字嗎?或者他們可以有任何價值?或者他們只是0,1,2,3和4? –