gpt4 book ai didi

ios - Swift 中的多重延迟

转载 作者:行者123 更新时间:2023-11-28 08:45:12 25 4
gpt4 key购买 nike

我正在开发一款简单的纸牌游戏,玩家按下一个按钮后,三台人工智能计算机将依次轮流进行。但是,我需要在每个回合之间有一个暂停。

这是我需要的:

playerButton > PAUSE > computer1Goes > PAUSE > computer2Goes > PAUSE > computer3Goes

代码:

@IBAction func placeCardAction(sender: UIButton) {

// playerButton does this action
var playerCardOnTop = game!.player.deck.placeCard()
middleDeck.addSingleCard(playerCardOnTop)
updateCardCount()

// Start computer actions
let delay = 2.0 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue()) {
self.game?.computer1PlacesCard(&self.middleDeck)
self.updateCardCount()
}

let delay2 = 2.0 * Double(NSEC_PER_SEC)
let time2 = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time2, dispatch_get_main_queue()) {
self.game?.computer2PlacesCard(&self.middleDeck)
self.updateCardCount()
}

let delay3 = 2.0 * Double(NSEC_PER_SEC)
let time3 = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time3, dispatch_get_main_queue()) {
self.game?.computer3PlacesCard(&self.middleDeck)
self.updateCardCount()
}
}

不幸的是,所有延迟同时开始/结束,所以最终发生的是所有计算机功能同时运行,而不是一个接一个地轮流运行。

如果有人能帮助解决这个问题,我将不胜感激!

最佳答案

最简单的解决方案....将 delay2 更改为 4,将 delay3 更改为 6。就目前而言,当然它们都同时关闭,它们都有相同的延迟。

或者,像这样堆叠它们:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay))) {
// step one
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay))) {
// step two
...
}
}

关于ios - Swift 中的多重延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com