我无法在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()
}
}
答案 0 :(得分:1)
您可以在false
的任何按钮上设置enabled,或在AI&#34;播放期间将整个视图上的userInteractionEnabeled设置为false
。防止用户与您的界面互动。
答案 1 :(得分:0)
获取整个UIButtonClicked
方法并将其包装在if子句中以查看AI是否正在决定:
@IBAction func UIButtonClicked(sender:UIButton) {
if (!aiDeciding) {
//all of your code
}
}