我正在研究一個簡單的紙牌遊戲,其中一個玩家按下一個按鈕後,三臺AI計算機會一個接一個地輪流。但是,我需要在每個回合之間停下來。Swift中的多重延遲
這就是我需要:
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()
}
}
不幸的是,所有的延遲啓動/在同一時間結束,所以最終發生的是所有的計算機功能同時運行,而不是一個接一個地輪流。
如果有人能幫助解決這個問題,我將不勝感激!
我試着堆疊它們,但它仍然一次運行所有它們。我還在dispatch_after的參數中包含了dispatch_get_main_queue,因爲如果沒有它,程序將不會運行。 – Michael