ios - 随机给 Sprite 着色,但需要限制

标签 ios swift random skaction

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

我有六个矩形。

[] = 一个矩形。

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

       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)

这段代码就是这样做的。但是,我不能将相同的颜色与下一对相邻。

[墙1][墙2][墙3][墙4][墙5][墙6]

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()]
}

这与俄罗斯方 block 使用的方法相同,以确保玩家不会走太久而看不到每个形状。

关于ios - 随机给 Sprite 着色,但需要限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802417/

相关文章:

ios - 是否可以编写脚本将源文件目录添加到 Xcode 项目中进行编译?

swift - 使用注释 pin 创建长按手势识别器

xcode - iOS 9 - 使用 Xcode 和 Swift 1.2 构建的扭曲的 UI

javascript - 为什么我要把 Math.floor 和 Math.random 结合起来?

ios - PhoneGap iOS 无法使用 HTML 5 播放视频

ios - View 中添加的事件按钮不起作用,iOS

c# - 如何从枚举中选择随机值?

php - 更新随机选择的行

objective-c - 使用 OpenGL-ES 在 iOS 上播放视频

swift - UIAlertController 中的内存泄漏关闭