【发布时间】:2017-01-13 12:59:30
【问题描述】:
我正在使用SpriteKit 和Swift 3 创建一个简单的游戏。
我有一组环/圆:
mRings = [mRingOne, mRingTwo, mRingThree, mRingFour, mRingFive]
数组中的每个对象都有不同的颜色,在游戏中的某个时刻我想改变每个环的颜色,但我有两个条件发生这种情况: 1. 戒指不应该具有之前迭代过的颜色。 2. 每个戒指的颜色应该与其他戒指不同。
对于第一个条件,我这样做了:
func changeRingsColor(){
var previousColor: UIColor?
for ring in mRings {
previousColor = ring.fillColor
repeat{
ring.fillColor = hexStringToUIColor(hex: mColors[Int(arc4random_uniform(UInt32(5)))])
}while(ring.fillColor.isEqual(previousColor))
}
}
它正在工作,但是,我无法找到回答第二个条件的方法。
在Java 我可能会做这样的事情:
for (int i=0; i<mRings.length; i++){
for( int j=1; j<mRings.length; j++){
if (ring[i].fillColor == ring[j].fillColor){
generate another color for 'j' ring.
}
}
}
但我尝试过的没有任何效果。 希望大家能帮帮我,先谢谢了!
顺便说一句,mColors 是一个包含 5 种不同颜色的数组,我从那里挑选颜色。
【问题讨论】:
-
您可能正在寻找的是“随机混乱”,即改变每个元素的随机排列。
-
最简单的算法是生成元素的随机顺序,然后按该顺序将颜色传递给下一个元素。
标签: arrays swift sprite-kit