私は、プレイヤーがスコアを蓄積する速度を計算しようとしているので、ゲームプレイに異なるプロパティを設定しています。私はしかし、それはどのようにそれが常に更新されるので、現在の入力に基づいてそれを行う方法を考え出すロジックに立ち往生しています。スコアのスピードを計算するには?
クリーンアップするために、私は空白のSwift Xcodeプロジェクトを作成し、ボタンと2つのラベルを付けました.1つはScore用、もう1つはSpeed(scoreSpeed)用です。
今の問題は、表示される速度が0で、明らかに最初のスコア位置(scorePos1)と2番目のスコア(scorePos2)の差を計算できないためです。私はそれがスコア値の不正確な「取得」(または不正なscorePosの配置)と関係があると感じています。
私は初心者ですから、もっと良い方法があります。ここで
は私の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)"
}
}
このメソッドを 'viewDidLoad'で' startTimer() 'と呼ぶのは、常に0を返すからです。次に、' scorePos2'と 'scorePos1'の両方を' score'に割り当てます。だから違いは常に0 – Maddy