少しTicTacToeをコーディングしています。今私は「isRow()」関数でだと私は以下のコードで非常に奇妙なバグを得た:tic-tac-toeロジックのデバッグ
:私のゲームの配列は次のようになりますときに私はhasWon()
関数を呼び出すとき今
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)
}
[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
を返しました。
[1, 2, 1, 1, 2, 1, 2, 1, 2]
、私は_時間 – UnknownProgrammer
に戻ってきます「の質問の場合、私は時間に戻ってきます」_ - それをしないでください。 [ask]で説明したように、解説を求めるコメントにはしばらくお待ちください。 – CodeCaster
コードをデバッグしましたか?ブレークポイントを設定します。関数をシングルステップ実行します。変数を調べます。どの時点であなたのコードはあなたが期待するものではありませんか? –