私はSpriteKit
とSwift 3
を使って簡単なゲームを作成しています。 私は指輪/円の配列を持っている:配列のネストされたfor-loops
mRings = [mRingOne, mRingTwo, mRingThree, mRingFour, mRingFive]
配列内の各オブジェクトは、私は各リングの色を変更したいゲームの中でいくつかの点で異なる色を持っていますが、私はこのための2条件を持っています起こること: 1.リングは前に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))
}
}
、それが働いているが、しかし、私は第二の条件に答えるための方法を考え出すことができませんでした。
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.
}
}
}
を私が試したものは何も働いていない: Java
では私はおそらくこのような何かをするだろう。 あなたが私を助けることを願っています、ありがとうございます!
btw、mColors
は5色の配列で、そこから色を選びます。
あなたが探しているのは、「ランダムな逸脱」、つまりすべての要素を変更するランダムな並べ替えです。 –
最も単純なアルゴリズムは、要素のランダムな順序を生成し、その順序で次の要素に色を渡すことです。 – Sulthan