Mein Code unten berechnet die Reaktionszeit für das Spiel. Die Gesamtreaktionszeit wird in totalTime
berechnet. Gerade jetzt speichert der Code die Reaktionszeit. Allerdings entspricht die totalTime
immer dem Highscore. Es wird also kein Highscore gespeichert, nur der aktuelle Score wird gespeichert. Ich möchte, dass der Code die niedrigste totalTime
speichert, wenn es weniger als die derzeit niedrigste totalTime
ist.Wie überschreibt man einen Highscore in swift3
import UIKit
class winViewController: UIViewController {
@IBOutlet var score2: UILabel!
@IBOutlet var winningLabel: UILabel!
@IBOutlet var foxMill: UILabel!
@IBOutlet var hhighscore: UILabel!
public var LebelText: String?
public var LebelText2: String?
public var LebelText3: String?
public var LebelText4: String?
override func viewDidLoad() {
super.viewDidLoad()
timeCalculation()
loadState()
}
func saveScore(score: Double) {
// Instantiate user defaults
let userDefaults:UserDefaults = UserDefaults.standard
// Set your score
userDefaults.set(score, forKey: "highScore")
// Sync user defaults
userDefaults.synchronize()
}
func loadState() {
let userDefaults = UserDefaults.standard
let score = userDefaults.double(forKey: "highScore")
foxMill.text = "High Score: \(score)"
}
func timeCalculation(){
guard let unwrapedText = self.LebelText2 else { return }
guard let unwrapedText2 = self.LebelText else { return }
guard let unwrapedText3 = self.LebelText3 else { return }
guard let unwrapedText4 = self.LebelText4 else { return }
if let myInt = Double(unwrapedText), let myInt2 = Double(unwrapedText2), let myInt3 = Double(unwrapedText3), let myInt4 = Double(unwrapedText4) {
var totalTime = myInt + myInt2 + myInt3 + myInt4
self.winningLabel.text = "You won"+"\n"+"Reaction time :" + String(totalTime) + " Seconds"
guard let highScore = UserDefaults.standard.value("highScore") as? Double else { return }
if totalTime > highScore {
saveScore(score: totalTime)
}
}
}
}
verbesserte Formatierung – budidino