Tic-Tac-Toe 游戏中的代码错误

Code error in Tic-Tac-Toe game

非常感谢您在以下方面的帮助。我一直在与这个小麻烦作斗争,但没有运气。我有这段代码,基本上是模拟 AI 与玩家玩 TIC TAC TOE。

let Result = RowCheck(value: 0)
if Result != nil {
    println("Computer has two in a row")
    var WhereToPlayResult = WhereToPlay(Result.location, pattern: Result.pattern)
    if !IsOccupied(WhereToPlayResult) {
        SetImageForSpot(WhereToPlayResult, player: 0)
        aiDeciding = false
        CheckForWin()
        return
    }
    return
}

RowCheck 只是检查要对抗的模式。

func RowCheck(#‎value:Int) -> (location:String,pattern:String)? {
    var AcceptableFinds = ["011","110","101"]
    var FindFuncs = [CheckTop,CheckBottom,CheckLeft,CheckRight,CheckMiddleAcross,CheckMiddleDown,CheckDiagionalRightLeft,CheckDiagionalLeftRight]
    for Algorthm in FindFuncs {
        var AlgorthmResults = Algorthm(value:value)
        if (find(AcceptableFinds,AlgorthmResults.pattern) != nil) {
            return AlgorthmResults
        }
    }
    return nil
}

但它给我一个错误:

var WhereToPlayResult = WhereToPlay(Result.location, pattern: Result.pattern)

因为您的 RowCheck 方法 return 是可选的(并且可能 return nil),您需要解包可选的或使用不同的赋值:


let Result = RowCheck(value: 0)
if Result != nil {
  var WhereToPlayResult = WhereToPlay(Result!.location, pattern: Result!.pattern)
  // ...                                    ^                          ^
}

if let Result = RowCheck(value: 0) {
  // ...
}

旁注:只有 类 应该以大写字母开头。为了保持 Apple 的代码风格,您应该将变量和函数设为 resultrowCheck