我今年 13 岁,正在尝试学习 Brian Advent 的 Swift 教程。他正在教我如何做一个简单的井字游戏。经过几个小时的研究,我试图在 Swift 中编写一个 tie 函数,我发现了很多代码,但没有任何帮助我。
这是我给获奖者的信息:
if winner != "" { //if winner is something
let alert = UIAlertController(title: "Tic Tac Toe", message: "The winner is \(winner)!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in
//TODO reset the fields
self.resetField()
}))
self.presentViewController(alert, animated: true, completion: nil)
}
这是平局时的消息:
else if winner == "" {
let alert = UIAlertController(title: "Tic Tac Toe", message: "It was a tie", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in
//TODO reset the fields
self.resetField()
}))
self.presentViewController(alert, animated: true, completion: nil)
}
但是当我输入这段代码并运行它时,它会弹出“平局”警报,因为一开始仍然没有赢家。
现在我需要的是一个代码,告诉我什么时候空格都被填满,这样就不会调用“It's a tie” block 。
我也有这段代码,如果有帮助的话。它检查是否有获胜者:
func checkResults(){
var winner = ""
if fields[0].player == "Steve" && fields[1].player == "Steve" && fields[2].player == "Steve"{
winner = "Steve"
}else if fields[0].player == "Creeper" && fields[1].player == "Creeper" && fields[2].player == "Creeper"{
winner = "Creeper"
}else if fields[3].player == "Steve" && fields[4].player == "Steve" && fields[5].player == "Steve"{
winner = "Steve"
}else if fields[3].player == "Creeper" && fields[4].player == "Creeper" && fields[5].player == "Creeper"{
winner = "Creeper"
}else if fields[6].player == "Steve" && fields[7].player == "Steve" && fields[8].player == "Steve"{
winner = "Steve"
}else if fields[6].player == "Creeper" && fields[7].player == "Creeper" && fields[8].player == "Creeper"{
winner = "Creeper"
}else if fields[0].player == "Steve" && fields[3].player == "Steve" && fields[6].player == "Steve"{
winner = "Steve"
}else if fields[0].player == "Creeper" && fields[3].player == "Creeper" && fields[6].player == "Creeper"{
winner = "Creeper"
}else if fields[1].player == "Steve" && fields[4].player == "Steve" && fields[7].player == "Steve"{
winner = "Steve"
}else if fields[1].player == "Creeper" && fields[4].player == "Creeper" && fields[7].player == "Creeper"{
winner = "Creeper"
}else if fields[2].player == "Steve" && fields[5].player == "Steve" && fields[8].player == "Steve"{
winner = "Steve"
}else if fields[2].player == "Creeper" && fields[5].player == "Creeper" && fields[8].player == "Creeper"{
winner = "Creeper"
}else if fields[0].player == "Steve" && fields[4].player == "Steve" && fields[8].player == "Steve"{
winner = "Steve"
}else if fields[0].player == "Creeper" && fields[4].player == "Creeper" && fields[8].player == "Creeper"{
winner = "Creeper"
}else if fields[2].player == "Steve" && fields[4].player == "Steve" && fields[6].player == "Steve"{
winner = "Steve"
}else if fields[2].player == "Creeper" && fields[4].player == "Creeper" && fields[6].player == "Creeper"{
winner = "Creeper"
}
编辑以包含 Daniel T 的函数:
最终的工作allFieldsFull()
代码:
else if allFieldsFull() == true && winner == "" {
let alert = UIAlertController(title: "Tic Tac Toe", message: "It's a tie", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in
//TODO reset the fields
self.resetField()
}))
self.presentViewController(alert, animated: true, completion: nil)
}
感谢您的帮助,非常感谢:) 如果有任何疑问请在下方评论
最佳答案
您的代码从不检查游戏是否结束。它仅检查是否有人获胜。
您需要一个 if 语句来检查所有方格是否都已满,如果是,并且 Winner == "",那么 游戏平局。
-编辑-
您了解循环并编写自己的函数了吗?解决新问题的方法是创建一个循环遍历所有字段的函数。
func allFieldsFull() -> Bool {
for i in 0 ..< 9 {
if fields[i].player.isEmpty {
return false
}
}
return true
}
我将让您弄清楚如何使用上述内容。祝你好运!
关于ios - Swift - 在 Tic Tac Toe 中编写 Tie 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239769/