我正在編寫一個小TicTacToe。現在,我在「isRow()」功能,我得到了下面的代碼很奇怪的錯誤:調試井字棋邏輯
var game = [0, 0, 0, 0, 0, 0, 0, 0, 0]
let winPatterns = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]]
func hasWon() -> Int
{
for pattern in winPatterns {
if (game[pattern[0]] != 0 && game[pattern[0]] == game[pattern[1]] && game[pattern[1]] == game[pattern[2]]) {
if (game[pattern[0]] == 1) {
return(1)
}
else {
return(2)
}
}
else if (!game.contains(0)) {
return(0)
}
}
return(-1)
}
現在,當我打電話hasWon()
功能時,我的遊戲陣列看起來像這樣:
[1, 2, 1, 1, 2, 2, 1, 1, 2]
我hasWon()
函數返回0
,但它應該返回1
後,我試圖解決這個問題了一會兒,我改變了我的代碼如下:
func hasWon() -> Int
{
for pattern in winPatterns {
if (game[pattern[0]] != 0) {
if (game[pattern[0]] == game[pattern[1]]) {
if (game[pattern[1]] == game[pattern[2]]) {
if (game[pattern[0]] == 1) {
return(1)
}
else {
return(2)
}
}
}
}
else if (!game.contains(0)) {
return(0)
}
}
它返回0
以防遊戲數組看起來像上面那樣。但是,當我的代碼看起來像它這樣做的,如果我的陣列看起來像這樣返回任何東西,而不是0
:
[1, 2, 1, 1, 2, 1, 2, 1, 2]
如有問題,我會在一小時後回來 – UnknownProgrammer
_「如有問題,我會回來一小時」 _ - 不這樣做。正如[問]中所解釋的,留待一段時間回答要求澄清的意見。 – CodeCaster
您*調試了您的代碼嗎?設置一個斷點。單步執行功能。檢查變量。你的代碼在什麼時候不是你所期望的? –