【问题标题】:Randomly coloring sprites, but needs restrictions随机着色精灵,但需要限制
【发布时间】:2016-06-14 12:25:43
【问题描述】:

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

我有六个矩形。

[] = 一个矩形。

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

       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)不能是红色的。

我想不通。

非常感谢您的帮助。

【问题讨论】:

  • 你的最后两行让事情变得不太清楚,因为它们表明你已经创建了名为 greenWall1、greenWall2、redWall1 等的节点。显然 这些 可以/应该没有他们名字所指的颜色?

标签: ios swift random skaction


【解决方案1】:

你制作了一个桶并从中提取颜色。 当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()]
}

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

【讨论】:

  • 我会说 greenWall.color = randomColor() 吗?我保留我的原始代码吗?
  • 上面的代码使用了一桶颜色。但是您可以通过您的操作轻松切换颜色。您想要实现的是,当某物被随机拉出时,同样的东西不可能再次被拉出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多