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 的代码风格,您应该将变量和函数设为 result
、rowCheck
等
非常感谢您在以下方面的帮助。我一直在与这个小麻烦作斗争,但没有运气。我有这段代码,基本上是模拟 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 的代码风格,您应该将变量和函数设为 result
、rowCheck
等