检查分数是否是10的倍数 - 斯威夫特

时间:2015-11-06 17:23:35

标签: xcode swift for-loop colors

我几次创建了一个游戏,我想更新代码。有一个分数逐一增加。

每十年,背景都变成另一种颜色。我创建了40种颜色(我使用了扩展来使用Hex颜色):

let color1 = SKColor(netHex: 0xFF6C5C)
let color2 = SKColor(netHex: 0x1297E0)
[...]
let color40 = SKColor(netHex: 0x9E6C4B)

在更新功能中,我为每十年(最多400个)创建了if statement

if score == 10 {

        self.backgroundColor = color1

}

if score == 20 {

        self.backgroundColor = color2

}

[...]

if score == 400 {

        self.backgroundColor = color40

}

我想使用for loop,因为代码行太多了。

首先,我移动了数组中的所有颜色:

let colorsArray = [

    SKColor(netHex: 0xFF6C5C), // COLOR 1
    SKColor(netHex: 0x1297E0), // COLOR 2
    [...]
    SKColor(netHex: 0xFF6C5C), // COLOR 40

]

我将此for loop放入更新功能......:

for let index = 10; index < 400; index + 10 {

        if score == index {

            let colorIndex = index / 10 - 1
            self.backgroundColor = colorsArray[colorIndex]

        }

}

...但应用程序崩溃了。

我认为更新功能不是执行此for loop的正确位置。有人可以帮帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

将颜色移动到数组中是正确的方法。

无需迭代循环来确定colorIndex,只需使用整数除法:

let colorIndex = score / 10
self.backgroundColor = colorsArray[colorIndex]

得分为0-9为0,得分为10-19为1,......为390-399得分为39 ......

答案 1 :(得分:0)

实际错误是什么?这将帮助我找出出错的地方。您可以尝试在for循环中注释掉各个行,以尝试隔离问题。

也可以使用modulo(%)来查看数字是否可被10整除而不是循环...