斯威夫特:我如何根据剩余时间制作评分系统?

时间:2016-01-10 01:25:24

标签: ios swift timer

我有一个有倒数计时器的应用程序。我希望它能够让用户完成游戏的速度越快,得分就越多。例如,给定的总时间是120秒,因此在60秒内完成游戏的用户获得120-60 = 60分,并且在100秒内完成游戏的人获得120-100 = 20分。 / p>

以下是我用来做倒数计时器的代码示例。

func setupGame()  {
seconds = 120
timerLabel.text = "Time: \(seconds)"
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("subtractTime"), userInfo: nil, repeats: true)
}

func subtractTime() {
    seconds--
    timerLabel.text = "Time: \(seconds)"
    if(seconds == 0)  {
        timer.invalidate()
        let alertController = UIAlertController(title: "You're Done!", message: "What would you like to do now?", preferredStyle: .Alert)

        let shareAction = UIAlertAction(title: "Share", style: UIAlertActionStyle.Default) {
            UIAlertAction in
            NSLog("Share Pressed")
        }

        let okAction = UIAlertAction(title: "Continue", style: UIAlertActionStyle.Cancel) {
            UIAlertAction in
            NSLog("Continue Pressed")
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewControllerWithIdentifier("singleViewController") as UIViewController
            self.presentViewController(vc, animated: true, completion: nil)
        }
        alertController.addAction(okAction)
        alertController.addAction(shareAction)

        self.presentViewController(alertController, animated: true, completion: nil)
    }
}

如您所见,当计时器达到0时,会弹出一个警告。当发生这种情况时,由于剩下的时间是0,我希望这个人获得的分数也是0。 (如果您想知道人们如何停止游戏,以便他们得到的分数不是0 - 我还有一个完成按钮,可以提前停止计时器并显示类似警报)

现在我需要的是一种在计时器停止时捕获的方法,计算120 - 用户的剩余时间 = 得分以便我可以在下一个ViewController的标签中显示它。

请指教!

1 个答案:

答案 0 :(得分:0)

假设没有"暂停"在你的游戏中,一个简单的解决方案就是在游戏开始时创建一个日期,然后在你想要的时间内检查自那个日期以来的秒数。