以下功能将红色至绿色倒计时,然后计算用户在显示绿灯后按下按钮的反应时间。
func updateCounter() {
timerInt -= 1
if timerInt == 2{
light.image = UIImage(named: "r.png")
} else if timerInt == 1 {
light.image = UIImage(named: "yellow.png")
} else if timerInt == 0 {
light.image = UIImage(named: arc4random_uniform(2) == 0 ? "no.png" : "g.png")
timer.invalidate()
startStop.isEnabled = true
scoreTimer = Timer.scheduledTimer(timeInterval: 0.0001, target: self, selector: #selector(ViewController.updateScoreTime), userInfo: nil, repeats: true)
}
}
如果它指出else if timerInt == 0
,则为用户提供随机函数。图像将变为绿色或显示“x”。
如果显示x,我希望用户必须点击指示游戏结束的按钮才能重启红灯序列。
如果显示绿灯,我希望用户必须测试他们的反应时间。
这就是函数现在已经运行的方式,但是如果显示x则它不会改变。我想我希望该函数运行如下:
如果timeInt == 0且选择了绿灯 然后运行测试反应时间
否则如果timeInt == 0且选择了x 然后结束反应时间并按下按钮
我怎样才能做到这一点?
答案 0 :(得分:0)
我不确定你想要达到的目标,所以我尽了最大努力。试试这个:
func updateCounter() {
timerInt -= 1
if timerInt == 2{
light.image = UIImage(named: "r.png")
} else if timerInt == 1 {
light.image = UIImage(named: "yellow.png")
} else if timerInt == 0 {
let green = (arc4random_uniform(2) == 0)
light.image = UIImage(named: (green ? "g.png" : "no.png"))
if green {
// run test reaction time
} else {
//end reaction time and run game over button
}
// NOTE: Do you mean `scoreTimer.invalidate()`?
timer.invalidate()
startStop.isEnabled = true
// NOTE: This time interval seems WAY too small ↓↓↓↓↓↓: it is only a millisecond!
scoreTimer = Timer.scheduledTimer(timeInterval: 0.0001, target: self, selector: #selector(ViewController.updateScoreTime), userInfo: nil, repeats: true)
}
}
将前两个注释(也称为以//
开头的行)替换为相应的代码,并记下第三和第四条注释。