2017-05-02 6 views
0

私は、ターゲットに入るときに円をクリックするゲームを持っていますが、今はすべてがちょうど左から右に落ちるようになっています。私はそれらをランダムな順序で落としてほしいが、私はどのように手がかりがない。ここでは私のコードは次のとおりです。リズムゲームスウィフト2の円を無作為化する

var alternator = 0 
var flag:Bool = true 
var fallTimer:NSTimer? 

func fallCircleWrapper() { 

    if (flag == true) { 
     self.alternator += 1 
    } else { 
     self.alternator -= 1 
    } 

    if (self.alternator == 0) { 
     flag = true 
    } else if (self.alternator == 5) { 
     flag = false 
    } 

    self.hitAreaArray[self.alternator].emitNote(self.texture!) 

} 

答えて

-1
// import GameplayKit for it's random generator capabilities 
import GameplayKit 

// this expression generates an array of NSNumbers where the values 
// are 0 to 4 - [0, 1, 2, 3, 4] but wrapped in NSNumbers 
let circleIndexes = (0..<5).map { return NSNumber(value: $0) } 

// uses a function in GameplayKit to shuffle the indexes in 
// the circleIndexes array 
let randomIndexes = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: circleIndexes) as! [Int] 

func fallCircleWrapper() { 

    if (flag == true) { 
     self.alternator += 1 
    } else { 
     self.alternator -= 1 
    } 

    if (self.alternator == 0) { 
     flag = true 
    } else if (self.alternator == 5) { 
     flag = false 
    } 

    // Now we select the circle to drop by choosing 
    // the next item out of the list of randomized indexes 
    self.hitAreaArray[randomIndexes[self.alternator]].emitNote(self.texture!) 
} 
+0

これはうまくいくかもしれませんが、あなたは何をしているのか説明していません。新しい開発者の多くは、.mapが何をしているのか、またGKを使ったことがないのかどうか分かりません。 – TheValyreanGroup

0

乱数を取得するには、あなたはarc4random-機能のいずれかを使用するので、この場合は例えば

let directionLeft = arc4random()%2 == 0 

その他の発言:それはないですこのフラグを真と比較するために必要です。

この回答How does one generate a random number in Apple's Swift language?は乱数について詳しく説明しています。

+0

私はこれを初めて習得していますが、私のコードでこれをどうしたらよいか教えてください。ありがとう – shadokyr

+0

これはあなたがそれを呼び出すたびにランダムな値を持つ方向のブール値のフラグを与えます。 50%の確率で真、50%は偽である。これは、ランダムな整数を計算し、2を法として計算することによって実現されます。したがって、偶数ごとにdirectionLeftは真、そうでなければ偽です。 – Gerriet

関連する問題