我有一个非常非常具体的问题。

我有六个矩形。

[] =一个矩形。

它们在屏幕上的格式如下:[] [] [] [] [] []。
它们都必须是红色,绿色和蓝色之间的随机颜色。

       var colorize1 = SKAction.colorizeWithColor(.redColor(), colorBlendFactor: 1.0, duration: 0.1)

        var colorize2 = SKAction.colorizeWithColor(.greenColor(), colorBlendFactor: 1.0, duration: 0.1)

        var colorize3 = SKAction.colorizeWithColor(.blueColor(), colorBlendFactor: 1.0, duration: 0.1)

       var actions = [colorize1, colorize2, colorize3]

         var randomIndex = Int(arc4random_uniform(3))

       var action = actions[randomIndex]





        greenWall1.runAction(action)
        greenWall2.runAction(action)


这段代码做到了。但是,我不能在下一对旁边使用相同的颜色。

[Wall1] [Wall2] [Wall3] [Wall4] [Wall5] [Wall6]

1和2是对。 3和4是对,等等。

墙1和墙2必须成对,因为它们是成对的。 3和4必须是不同的随机颜色。 5和6必须与WallPair1和WallPair2不同。

现在,我每对最多得到三种相同的颜色。也许所有的红色。

我需要编写这样的代码:“例如,如果对1(wall1和wall2)是红色的,那么第二对(wall3和wall4)和第三对(wall5和wall6)就不能是红色。

我不知道这个。

非常感谢你的帮助。

最佳答案

您制作一个水桶并从中拉出颜色。
colorBucket为空时,请重新填充。

例如。

var colorBucket = [UIColor]()

func randomColor() -> UIColor {

    if colorBucket.isEmpty {
        fillBucket()
    }

    let randomIndex = Int(arc4random_uniform(UInt32(colorBucket.count)))
    let randomColor = colorBucket[randomIndex]
    colorBucket.removeAtIndex(randomIndex)
    return randomColor
}

func fillBucket() {
    colorBucket = [UIColor.redColor(), UIColor.greenColor(), UIColor.blueColor()]
}


这与“俄罗斯方块”用来确保玩家在不看到所有形状的情况下走太久的方法相同。

10-05 21:17
查看更多