Swift,生成编号列表的数组变量
Swift, Generating Array Variables of a Numbered List
我正在 swift 和 xcode 中制作一个简单的游戏,我 运行 遇到了这个我无法解决的问题。因为我有很多级别,所以代码锁定了索引并减慢了整个程序。我让色轮旋转了几分钟,但它从未崩溃。每次输入几个字符只需要几分钟。 St运行ge,但是 xcode 总是有它的错误,对吗?
每个按钮(下面的 "button1, button2...")从 "level1:Array" 获得一个数字。它就像一个代码,为游戏填充按钮的值。只有 4 个按钮,但数字应该可以更改,因为它们每个都有自己的变量。
我想为每一关都生成这个。我应该能够生成类似 "button1 = level#[0]" 的内容,其中 # 被 "userLevel" 替换。更改为字符串并执行类似 "button1 = ("level(userLevel)") as! Array... 似乎不起作用。请看下面,如果可以的话,请在举例时使用我的术语。谢谢!
示例如下:
let level1:Array = [9,7,4,1] // current puzzle, to go directly into button vars below (button1,button2,ect)
var userLevel = 1 // current user's level
if userLevel == 1 {
print("making Level 1, setting buttons to value from array")
button1 = level1[0]
button2 = level1[1]
button3 = level1[2]
button4 = level1[3]
}
现在,由于 level# 经常重复(随着数字的增加,每个级别都会重复)我宁愿把它做成这样:
//this doesn't work in swift, but what else can I do?
if userLevel > 0 {
button1 = level\(userLevel)[0]
button2 = level\(userLevel)[1]
button3 = level\(userLevel)[2]
button4 = level\(userLevel)[3]
}
有没有简单的方法来做到这一点?谢谢!
-GG
尝试使用 for-in
循环。创建一个按钮数组,然后
var index = 0
for button in buttons {
button = level1[index]
index++
}
EDIT 因为你希望用户级别和级别数都增加,所以我建议你这样定义级别。 (确保按钮的数量等于userLevels的数量,否则会出问题)
var array = [1,2,3]
let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]
var index = 0
if array.count == levels.count {
for number in array {
array[index] = levels[index+1]![index]//The second index can be 0 if you want
index++
}
}
//array = [1,6,5]
// You could create a second index to match the number of levels within the main user level.
在这种情况下,假设 array
是您的按钮数组
编辑 2 :)
我做了一个函数,允许您为特定用户级别将所有级别分配给您的数组,因为我看到这就是您想要的
let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]
func assignValuesToArray(levelNo:Int) -> [Int] {
var array: [Int] = []
if (levelNo > 0) && (levelNo <= levels.count) {
for (level,levelArray) in levels {
if level == levelNo {
for value in levelArray {
array.append(value)
}
}
}
return array
} else {
print("This Level number does not exist")
return []
}
}
var finalArray = assignValuesToArray(2)
print(finalArray) // Returns [3,6,4]
正如您从该示例中看到的那样,您将从函数中 return 按钮数组,并且可以将 returned 数组值分配给任何您喜欢的值。
我正在 swift 和 xcode 中制作一个简单的游戏,我 运行 遇到了这个我无法解决的问题。因为我有很多级别,所以代码锁定了索引并减慢了整个程序。我让色轮旋转了几分钟,但它从未崩溃。每次输入几个字符只需要几分钟。 St运行ge,但是 xcode 总是有它的错误,对吗?
每个按钮(下面的 "button1, button2...")从 "level1:Array" 获得一个数字。它就像一个代码,为游戏填充按钮的值。只有 4 个按钮,但数字应该可以更改,因为它们每个都有自己的变量。
我想为每一关都生成这个。我应该能够生成类似 "button1 = level#[0]" 的内容,其中 # 被 "userLevel" 替换。更改为字符串并执行类似 "button1 = ("level(userLevel)") as! Array... 似乎不起作用。请看下面,如果可以的话,请在举例时使用我的术语。谢谢!
示例如下:
let level1:Array = [9,7,4,1] // current puzzle, to go directly into button vars below (button1,button2,ect)
var userLevel = 1 // current user's level
if userLevel == 1 {
print("making Level 1, setting buttons to value from array")
button1 = level1[0]
button2 = level1[1]
button3 = level1[2]
button4 = level1[3]
}
现在,由于 level# 经常重复(随着数字的增加,每个级别都会重复)我宁愿把它做成这样:
//this doesn't work in swift, but what else can I do?
if userLevel > 0 {
button1 = level\(userLevel)[0]
button2 = level\(userLevel)[1]
button3 = level\(userLevel)[2]
button4 = level\(userLevel)[3]
}
有没有简单的方法来做到这一点?谢谢! -GG
尝试使用 for-in
循环。创建一个按钮数组,然后
var index = 0
for button in buttons {
button = level1[index]
index++
}
EDIT 因为你希望用户级别和级别数都增加,所以我建议你这样定义级别。 (确保按钮的数量等于userLevels的数量,否则会出问题)
var array = [1,2,3]
let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]
var index = 0
if array.count == levels.count {
for number in array {
array[index] = levels[index+1]![index]//The second index can be 0 if you want
index++
}
}
//array = [1,6,5]
// You could create a second index to match the number of levels within the main user level.
在这种情况下,假设 array
是您的按钮数组
编辑 2 :) 我做了一个函数,允许您为特定用户级别将所有级别分配给您的数组,因为我看到这就是您想要的
let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]
func assignValuesToArray(levelNo:Int) -> [Int] {
var array: [Int] = []
if (levelNo > 0) && (levelNo <= levels.count) {
for (level,levelArray) in levels {
if level == levelNo {
for value in levelArray {
array.append(value)
}
}
}
return array
} else {
print("This Level number does not exist")
return []
}
}
var finalArray = assignValuesToArray(2)
print(finalArray) // Returns [3,6,4]
正如您从该示例中看到的那样,您将从函数中 return 按钮数组,并且可以将 returned 数组值分配给任何您喜欢的值。