[英]How to generate a random number in Swift without repeating the previous random number?
[英]How to generate a random number between 1 and 75 repeating every 10 seconds in Swift
我在Swift中有以下代碼,試圖獲得一個簡單的隨機數生成器作為游戲模擬器。
var randomNumber = 0
override func viewDidLoad() {
super.viewDidLoad()
randomNumber = Int(arc4random_uniform(74) + 1)
label.text = "\(randomNumber)"
}
我是Swift編程的新手,但是我知道要使用timer()
和import Foundation
來使用timer函數,但是我不確定如何實現並使其成為一個新數字,因此每隔10秒就會在標簽中出現一個新數字。 謝謝你的幫助。
使用間隔為10
秒的Timer
從numbers
數組中提取一個新numbers
。 從數組中刪除該號碼,這樣您就不會再撥打同一號碼了。 當按下stop
按鈕時,或者您的號碼已用完時,請在timer
上呼叫invalidate
以將其停止。
class BingoCaller: UIViewController {
@IBOutlet weak var label: UILabel!
var numbers = Array(1...75)
let letters = ["B", "I", "N", "G", "O"]
var timer: Timer?
override func viewDidLoad() {
timer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in
let index = Int(arc4random_uniform(UInt32(self.numbers.count)))
let number = self.numbers.remove(at: index)
self.label.text = "\(self.letters[(number - 1) / 15])-\(number)"
if self.numbers.isEmpty {
timer.invalidate()
}
}
}
@IBAction func stop(_ button: UIButton) {
timer?.invalidate()
}
}
下一步建議:
AVSpeechSynthesizer
使iPhone實際說出這些數字。 numbers
初始化為Array(1...75)
,將被calledNumbers
的numbers
初始化為[]
,然后重新開始。 將Timer
循環移至其自己的功能是一個好主意,以便可以從start
按鈕調用它。 您可以定義一個助手數組,該數組可以讓您檢查該數字是否已返回:
var array = [Int]()
var timer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(ViewController.timerFunction), userInfo: nil, repeats: true)
}
func timerFunction(){
var n = arc4random_uniform(75) + 1
while array.contains(Int(n)){
n = arc4random_uniform(75) + 1
}
array.append(Int(n))
label.text = String(n)
if array.count == 75{
timer?.invalidate()
}
}
這樣,您可以確保在使用完所有數字后計時器失效,並且還可以避免索引刪除錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.