我在swift和xcode中制作了一个简单的游戏,我遇到了这个我无法弄清楚的问题。因为我有这么多级别,代码会锁定索引并减慢整个程序的速度。我得到一个色轮旋转几分钟,但它永远不会崩溃。我每次输入几个字符只需几分钟。很奇怪,但是xcode一直有它的错误吗?
每个按钮("按钮1,按钮2 ......"下面)从" level1:Array"中获取单个数字。这就像填充按钮的游戏价值的代码。只有4个按钮,但数字应该能够改变,因为每个按钮都有自己的变量。
我想为每个级别生成这个。我应该能够生成类似" button1 = level#[0]"其中#被" userLevel"替换。更改为字符串并执行类似" button1 =(" level(userLevel)")的操作!数组......似乎不起作用。如果可以,请在下面给出示例并使用我的术语。谢谢!
以下是例子:
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]
}
现在,由于等级#经常重复(对于每个级别随着数字的进展),我宁愿做到这样的事情:
//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
答案 0 :(得分:1)
尝试使用for-in
循环。创建一个按钮数组,然后
var index = 0
for button in buttons {
button = level1[index]
index++
}
编辑,因为您希望用户级别和级别编号都增加,我建议您定义这样的级别。 (确保按钮的数量等于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 :) 我已经创建了一个函数,允许您为特定的userLevel分配数组的所有级别,因为我看到的就是你想要的
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]
从这个例子中可以看出,你将从函数中返回你的按钮数组,你可以将返回的数组值分配给你喜欢的任何颜色。