Swift:带有for循环的图像和变量中的随机数数组
Swift: Random number arrays inside images and variables with a for loop
我正在创建一个游戏,其中 根据选择的 'swipes' 的数量(假设为 3),屏幕上会一个接一个地显示 3 种不同的模式。 我正在开发第一个模式。
所以我有这个:
if (swipes.no_of_swipes) == 3 {
swipeArray = Array<UInt32>(count: 3, repeatedValue: 0)
for i in 0 ..< 3 {
swipeArray[i] = arc4random_uniform(84)}
}
据我所知,这段代码创建了一个包含三个 UInts 的数组,可以通过执行 swipeArray[0]、swipeArray[1] 来访问它, 和 swipeArray[2]。我的第一个问题是 这个 swipeArray 会保持多长时间不变?直到关闭视图? 当用户输了时,我是否应该 'refresh button' - 如果是,我将如何制作?
然后我有一个属性观察器。您会注意到 for 循环,我用它来保持代码简洁。我知道我可以在这里的某个地方做类似 x++
的事情,这样它就会遍历每一个。
var playBegin: Bool = false{
didSet {
if playBegin == true {
println("\(playBegin)")
var swipes = Menu()
if (swipes.no_of_swipes) == 3 {
for i in 0 ..< 3 {
patternRoom.image = UIImage(named: "pattern\(swipeArray[x])")
//rest of code
}
}
}
图案图像来自 一组 84 张图像,名称如 pattern7
和 pattern56
。我的第二个问题是,我如何编写 for 循环以遍历每个 swipeArray[x]。
提前谢谢你,
将
how long will this swipeArray stay the same?
这有点太开放了。它会保持不变,直到您从同一段代码或不同的部分为其分配新值。只有您可以通过查看您的代码知道那会是什么时候。
由于您表示有兴趣保持代码简洁,这里有一些代码提示。
您可能会考虑像这样编写第一个片段的循环:
swipeArray = (0..<swipes.no_of_swipes).map { _ in
arc4random_uniform(84)
}
这结合了创建新数组和填充值。顺便说一句,以防万一你没有意识到,不能保证这个数组不会两次包含相同的值。
将 swipeArray
设为 [Int]
类型可能比 [UInt32]
更好,并将 arc4random
的结果直接转换为 Int
离开:
Int(arc4random_uniform(84))
否则 UInt32
可能会很麻烦。
对于你的第二个 for 循环,你可以这样做:
for i in swipeArray {
patternRoom.image = UIImage(named: "pattern\(i)")
// rest of code
}
写 Swift 时,通常(但不总是),当你发现自己使用 array[x]
时,有一种更好的表达方式。
我正在创建一个游戏,其中 根据选择的 'swipes' 的数量(假设为 3),屏幕上会一个接一个地显示 3 种不同的模式。 我正在开发第一个模式。
所以我有这个:
if (swipes.no_of_swipes) == 3 {
swipeArray = Array<UInt32>(count: 3, repeatedValue: 0)
for i in 0 ..< 3 {
swipeArray[i] = arc4random_uniform(84)}
}
据我所知,这段代码创建了一个包含三个 UInts 的数组,可以通过执行 swipeArray[0]、swipeArray[1] 来访问它, 和 swipeArray[2]。我的第一个问题是 这个 swipeArray 会保持多长时间不变?直到关闭视图? 当用户输了时,我是否应该 'refresh button' - 如果是,我将如何制作?
然后我有一个属性观察器。您会注意到 for 循环,我用它来保持代码简洁。我知道我可以在这里的某个地方做类似 x++
的事情,这样它就会遍历每一个。
var playBegin: Bool = false{
didSet {
if playBegin == true {
println("\(playBegin)")
var swipes = Menu()
if (swipes.no_of_swipes) == 3 {
for i in 0 ..< 3 {
patternRoom.image = UIImage(named: "pattern\(swipeArray[x])")
//rest of code
}
}
}
图案图像来自 一组 84 张图像,名称如 pattern7
和 pattern56
。我的第二个问题是,我如何编写 for 循环以遍历每个 swipeArray[x]。
提前谢谢你,
将
how long will this swipeArray stay the same?
这有点太开放了。它会保持不变,直到您从同一段代码或不同的部分为其分配新值。只有您可以通过查看您的代码知道那会是什么时候。
由于您表示有兴趣保持代码简洁,这里有一些代码提示。
您可能会考虑像这样编写第一个片段的循环:
swipeArray = (0..<swipes.no_of_swipes).map { _ in
arc4random_uniform(84)
}
这结合了创建新数组和填充值。顺便说一句,以防万一你没有意识到,不能保证这个数组不会两次包含相同的值。
将 swipeArray
设为 [Int]
类型可能比 [UInt32]
更好,并将 arc4random
的结果直接转换为 Int
离开:
Int(arc4random_uniform(84))
否则 UInt32
可能会很麻烦。
对于你的第二个 for 循环,你可以这样做:
for i in swipeArray {
patternRoom.image = UIImage(named: "pattern\(i)")
// rest of code
}
写 Swift 时,通常(但不总是),当你发现自己使用 array[x]
时,有一种更好的表达方式。