如何在Swift中生成1到75之间的随机数,每10秒重复一次
我在Swift中有以下代码,试图获得一个简单的随机数生成器作为游戏模拟器如何在Swift中生成1到75之间的随机数,每10秒重复一次,swift,Swift,我在Swift中有以下代码,试图获得一个简单的随机数生成器作为游戏模拟器 var randomNumber = 0 override func viewDidLoad() { super.viewDidLoad() randomNumber = Int(arc4random_uniform(74) + 1) label.text = "\(randomNumber)" } 我不熟悉Swift编程,但我知道使用timer()和import Foundation来使
var randomNumber = 0
override func viewDidLoad() {
super.viewDidLoad()
randomNumber = Int(arc4random_uniform(74) + 1)
label.text = "\(randomNumber)"
}
我不熟悉Swift编程,但我知道使用
timer()
和import Foundation
来使用计时器功能,但我不知道如何实现并确保它,因此标签上每隔10秒会出现一个新的数字。感谢您的帮助。使用间隔为10秒的计时器
从数字数组中提取新数字。从阵列中删除该号码,这样您就不会两次呼叫同一号码。当按下停止
按钮,或您的电话号码不足时,请在计时器上调用无效
以停止该按钮
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()
}
}
对下一步的建议:
将已拉入的数字添加到第二个数组中。使用该数组填充tableView,这样Gran就可以在有人呼叫“Bingo!”时查看数字
使用AVSpeechSynthesizer
让iPhone实际说出数字
添加重置按钮以开始新游戏。将编号
初始化为数组(1…75)
,将调用的编号
初始化为[]
,然后重新启动。最好将计时器
循环移动到它自己的函数,这样就可以从开始
按钮调用它
使用间隔为10
秒的计时器
从数字数组中提取新数字。从阵列中删除该号码,这样您就不会两次呼叫同一号码。当按下停止
按钮,或您的电话号码不足时,请在计时器上调用无效
以停止该按钮
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()
}
}
对下一步的建议:
将已拉入的数字添加到第二个数组中。使用该数组填充tableView,这样Gran就可以在有人呼叫“Bingo!”时查看数字
使用AVSpeechSynthesizer
让iPhone实际说出数字
添加重置按钮以开始新游戏。将编号
初始化为数组(1…75)
,将调用的编号
初始化为[]
,然后重新启动。最好将计时器
循环移动到它自己的函数,这样就可以从开始
按钮调用它
您可以定义一个帮助器数组,该数组允许您检查该数字是否已返回:
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()
}
}
通过这种方式,您可以确保计时器在所有数字都已使用时无效,并避免索引删除错误。您可以定义一个帮助器数组,该数组将允许您检查该数字是否已返回:
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()
}
}
这样,当所有数字都已使用时,您可以确保计时器无效,并避免索引删除错误。只需在计时器回调中获取数字即可。但是你不想重复,所以你不能简单地每次生成一个介于1和75之间的随机数。只需在计时器回调中获取该数字。但是你不想重复,所以你不能简单地每次生成一个1到75之间的随机数。字母的意义是什么?用实际字母玩宾果游戏?在宾果游戏中,数字用字母“B-7”、“O-73”、“I-16”来调用,以便在卡上更容易找到数字。字母的意义是什么?用实际字母玩宾果游戏?在宾果游戏中,用字母“B-7”、“O-73”、“I-16”来调用数字,这样在卡片上更容易找到数字。这是非常低效的。看看大多数纸牌游戏是如何实现的。都一样。用数字填充数组。洗牌数组。然后在计时器关闭时逐个访问每个元素。这是非常低效的。看看大多数纸牌游戏是如何实现的。都一样。用数字填充数组。洗牌数组。然后在计时器关闭时逐个访问每个元素。