2014-11-09 85 views
0

我無法在井字遊戲中的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() 
    } 

} 

回答

1

您可以設置任何按鈕enabledfalse或到false整個視圖AI「回放」過程中設置userInteractionEnabeled以防止用戶與界面進行交互。

+0

你會如何寫呢? – Pjc1992 2014-11-09 08:16:13

+0

@ Pjc1992'當開始動畫時'self.view.userInteractionEnabled = false',完成時'self.view.userInteractionEnabled = true'。 – drewag 2014-11-09 18:30:09

0

拍攝整個UIButtonClicked方法,敷在if子句,看看如果AI是決定:

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

謝謝Garrett。我按照你的解釋嘗試了它,但由於某種原因它不起作用......有什麼想法? – Pjc1992 2014-11-09 08:17:16

+0

你確定你在某個時候將aiDeciding設置爲true嗎? – Garrett 2014-11-09 16:44:14