簡體   English   中英

如何在Swift中每10秒重復生成1到75之間的隨機數

[英]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秒的Timernumbers數組中提取一個新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()
    }
}

下一步建議:

  1. 將已拉出的數字添加到第二個數組中。 使用該數組填充tableView,以便當有人呼叫“ Bingo!”時Gran能夠查看數字。
  2. 使用AVSpeechSynthesizer使iPhone實際說出這些數字。
  3. 添加重置按鈕以開始新游戲。 numbers初始化為Array(1...75) ,將被calledNumbersnumbers初始化為[] ,然后重新開始。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM