Die folgende Funktion zählt ein rotes bis grünes Licht herunter und zählt dann die Reaktionszeit für den Benutzer, um eine Schaltfläche zu drücken, nachdem das grüne Licht angezeigt wird.verschachtelt if-Anweisung in swift-Funktion
func updateCounter() {
timerInt -= 1
if timerInt == 2{
light.image = UIImage(named: "r.png")
} else if timerInt == 1 {
light.image = UIImage(named: "yellow.png")
} else if timerInt == 0 {
light.image = UIImage(named: arc4random_uniform(2) == 0 ? "no.png" : "g.png")
timer.invalidate()
startStop.isEnabled = true
scoreTimer = Timer.scheduledTimer(timeInterval: 0.0001, target: self, selector: #selector(ViewController.updateScoreTime), userInfo: nil, repeats: true)
}
}
Dort, wo es else if timerInt == 0
angibt, erhält der Benutzer eine zufällige Funktion. Ein Bild wird entweder grün oder ein "x" wird angezeigt.
Wenn das x angezeigt wird, möchte ich, dass der Benutzer eine Taste drücken muss, die das Spiel anzeigt, um die Rotlichtsequenz neu zu starten.
Wenn ein grünes Licht angezeigt wird, möchte ich, dass der Benutzer ihre Reaktionszeit testen muss.
So läuft die Funktion bereits jetzt, außer dass sie sich nicht ändert, wenn das x angezeigt wird. Ich glaube, ich würde die Funktion gerne laufen wie folgt:
wenn timeInt == 0 und grünes Licht gewählt wird
dann Testreaktionszeitelse if timeInt == 0 und x laufen
gewählt dann Reaktionszeit beenden und Run-Spiel über Knopf
Wie kann ich das erreichen?
0,0001 für Ihren Timer ist es zu schnell Bildwiederholfrequenz. Es müsste 10.000 Mal pro Sekunde ausgeführt werden. Verwenden Sie einfach 1/30, das ist die Zeit, die für die meisten Bildschirm-Updates benötigt wird. –
Ihre Frage ist zu allgemein. Vielleicht können Sie uns ein wenig mehr Kontext geben. Wie testen Sie die Reaktionszeit? Wie beendest du die Reaktionszeit? Was soll updateScoreTime() tun? –