我正在用Swift开发游戏模拟,并希望有一个功能可以运行,直到拥有权发生变化为止。
我的while循环几乎可以正常工作,但是似乎运行了太多次。我已经阅读了其他一些问题,似乎无法弄清楚……(我是这个新手!)
var possession = 0
func runPlay() -> String {
// Run play scenario
// If meets criteria for possession change then run following, otherwise leave 'possession' unchanged
if possession == 0 {
possession = 1
}
else {
possession = 0
}
// Return description of the play.
return commentary
}
func runPossession() -> String {
let possFlag = possession
repeat {
runPlay()
} while possFlag == possession
return commentary
}
此过程一直进行,但停止一个循环为时已晚。即在拥有权发生变化后,它将运行第一个方案。困惑。
谢谢!
答案 0 :(得分:0)
尝试这样做:
while possFlag == possession {
runPlay()
}
您正在做一会儿,首先执行一次传递,然后检查语句,这将导致比您想要的迭代更多的迭代。 您可以在Swift文档中找到有关Control Flow的更多信息。
一个完全不同的选项将摆脱while语句。也许做些“反应性”的事情。例如,您可以检查您拥有的possFlag
内的财产是否等于didSet
。
var possession: Bool = False {
didSet {
if possFlag == possession {
// do what you need
}
}
您将继续进行其余的游戏逻辑。