我非常感谢您对以下方面的帮助。我一直在和这个小小的滋扰斗争一段时间,但没有运气。我有一些代码,基本上模拟了一个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)
答案 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的代码风格,您应该将变量和函数设置为result
,rowCheck
等。