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

时间:2015-03-02 22:13:20

标签: ios swift tic-tac-toe

我非常感谢您对以下方面的帮助。我一直在和这个小小的滋扰斗争一段时间,但没有运气。我有一些代码,基本上模拟了一个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)

1 个答案:

答案 0 :(得分:2)

因为您的RowCheck方法返回一个可选项(并且可能返回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等。