随机着色精灵,但需要限制
Randomly coloring sprites, but needs restrictions
我有一个非常非常具体的问题。
我有六个矩形。
[] = 一个矩形。
它们在屏幕上的格式如下:[] [][] [][] []。
它们都需要是红色、绿色和蓝色之间的随机颜色。
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。
现在,我在每双鞋上使用了最多三种相同的颜色。也许都是红色的。
我需要编写这样的代码:“例如,如果第一对(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()]
}
这与俄罗斯方块使用的方法相同,以确保玩家不会走太久而看不到每个形状。
我有一个非常非常具体的问题。
我有六个矩形。
[] = 一个矩形。
它们在屏幕上的格式如下:[] [][] [][] []。 它们都需要是红色、绿色和蓝色之间的随机颜色。
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。
现在,我在每双鞋上使用了最多三种相同的颜色。也许都是红色的。
我需要编写这样的代码:“例如,如果第一对(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()]
}
这与俄罗斯方块使用的方法相同,以确保玩家不会走太久而看不到每个形状。