如何计算得分速度?

时间:2017-05-19 11:43:09

标签: ios swift timer swift3

我正在尝试计算玩家累积分数的速度,以便为游戏玩法设置不同的属性。然而,我仍然坚持逻辑,弄清楚如何做到这一点,以便根据当前输入不断更新。

为了清理东西,我创建了一个空白的Swift Xcode项目,带有一个按钮和两个标签 - 一个用于分数,一个用于速度(scoreSpeed)。

现在的问题是显示的速度为0,显然是因为它无法计算第一个得分位置(scorePos1)和第二个得分位置(scorePos2)之间的差异。我有一种感觉,这与得分值的错误“得分”(或者得分不正确的位置)有关。

我是初学者,所以也许有更好的方法。

这是我的ViewController中的代码:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        startTimer()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    var score = Double()
    var scorePos1 = Double()
    var scorePos2 = Double()
    var scoreSpeed = Double()
    var timerInt: Double = 5.0

    @IBOutlet weak var scoreLabel: UILabel!
    @IBOutlet weak var speedLabel: UILabel!
    @IBAction func Button(_ sender: Any) {
        score += 1.0
        scoreLabel.text = "Score: \(score)"
        scorePos1 = score
    }

    var speedTimer = Timer()

    func startTimer(){
        //speedTimer.invalidate()
        speedTimer = Timer.scheduledTimer(timeInterval: timerInt, target: self, selector: #selector(calcSpeed), userInfo: nil, repeats: true)
    }

    func calcSpeed(){
        scorePos2 = score
        scoreSpeed = (scorePos2 - scorePos1)/timerInt
        speedLabel.text = "Speed: \(scoreSpeed)"
    }
}

1 个答案:

答案 0 :(得分:0)

按下按钮会将scorePos1设置为score,而calcSpeed功能会将scorePos2设置为score,因此它们都会得分。

在计算速度后,将scorePos2设为得分

另外,将是

scorePos1 - scorePos2

如果scorePos2是历史帐户。