Swift,生成编号列表的数组变量

时间:2015-11-28 05:29:45

标签: arrays xcode optimization swift2 swift2.1

我在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

1 个答案:

答案 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]

从这个例子中可以看出,你将从函数中返回你的按钮数组,你可以将返回的数组值分配给你喜欢的任何颜色。