如何在AI响应之前的延迟期间防止用户响应

时间:2014-11-09 03:10:30

标签: xcode swift

我无法在Tic Tac Toe游戏中在AI响应之前继续激活按钮。正如你所看到的,我添加了一个延迟响应,但即使在我的AI响应之前,我仍然能够再做一次。任何人都知道如何在AI转弯之前禁用第一个玩家转弯?

@IBOutlet var userMessage: UILabel!

struct Sender{
    var tag = 1
    }

var plays = Dictionary<Int,Int>()
var done = false
var aiDeciding = false
var sender: Sender = Sender()


@IBAction func UIButtonClicked(sender:UIButton) {
    userMessage.hidden = true
    if plays[sender.tag] == nil && !aiDeciding && !done {
        setImageForSpot(sender.tag, player: 1)

    }
    checkForWin()
    func delay(delay:Double, closure:()->()) {

        dispatch_after(
            dispatch_time(
                DISPATCH_TIME_NOW,
                Int64(delay * Double(NSEC_PER_SEC))
            ),
            dispatch_get_main_queue(), closure)

    }
    delay(0.4) {
        self.aiTurn()
    }

}

2 个答案:

答案 0 :(得分:1)

您可以在false的任何按钮上设置enabled,或在AI&#34;播放期间将整个视图上的userInteractionEnabeled设置为false。防止用户与您的界面互动。

答案 1 :(得分:0)

获取整个UIButtonClicked方法并将其包装在if子句中以查看AI是否正在决定:

@IBAction func UIButtonClicked(sender:UIButton) {
    if (!aiDeciding) {
        //all of your code
    }
}