我正在尝试计算玩家累积分数的速度,以便为游戏玩法设置不同的属性。然而,我仍然坚持逻辑,弄清楚如何做到这一点,以便根据当前输入不断更新。
为了清理东西,我创建了一个空白的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)"
}
}
答案 0 :(得分:0)
按下按钮会将scorePos1
设置为score
,而calcSpeed
功能会将scorePos2
设置为score
,因此它们都会得分。
在计算速度后,将scorePos2
设为得分。
另外,将是
scorePos1 - scorePos2
如果scorePos2
是历史帐户。