2016-02-01 2 views
0

J'ai un tableau qui contient les valeurs CGFloat et je suis en train de comprendre comment j'aller sur randomiser à travers ce tableau pour obtenir une coordonnée aléatoire x:Obtention d'une valeur CGFloat aléatoire à partir d'un tableau?

let xAxisSpawnLocations: [CGFloat] = [screenWidth + 150, screenWidth + 100, screenWidth + 50 , screenWidth - 50, screenWidth - 100, screenWidth - 150] 

parce que je dois les mettre en ligne de code qui positionnera un objet sur la carte. J'ai essayé de chercher comment randomiser à travers un tableau mais il ne l'a que pour les valeurs Int32.

Peut-être s'il vous plaît fournir et exemple sur la façon de le faire.

Voici le code complet pour référence si vous devez regarder:

let xAxisSpawnLocations: [CGFloat] = [screenWidth + 150, screenWidth + 100, screenWidth + 50 , screenWidth - 50, screenWidth - 100, screenWidth - 150] 
let yAxisSpawnLocations: [CGFloat] = [0]       

     for xLocation in xAxisSpawnLocations { 

      for (var i = 0; i < Int(numberOfObjectsInLevel); i++) { 


      let obstacle:Object = Object() 

      obstacle.theType = LevelType.road 


      obstacle.createObject() 
      addChild(obstacle) 



      obstacle.position = CGPoint(x: xLocation, y: yAxisSpawnLocations[0]) 
      obstacle.zPosition = 9000 
      // addChild(greenFrog) 
     } 
     } 
    } 

Le xLocation doit être remplacé par le randomiser

+0

double possible de [Comment fait-on nombre aléatoire entre la plage pour arc4random \ _uniform()?] (http://stackoverflow.com/questions/24132399/how-does-one-make-random-number-between-range-for-arc4random-uniform) – SmokeDispenser

+0

Probablement un doublon de [Choisissez un élément aléatoire parmi un tableau] (http://stackoverflow.com/questions/24003191/pick-a-random-element-from-an-array) – tebs1200

Répondre

1

lors de votre réseau peut être stocker CGFloat valeurs, les index de tableau seront toujours des entiers. Les tableaux ont toujours des index basés sur des entiers indépendamment de ce qu'ils stockent.

Vous voulez simplement générer un nombre aléatoire entre 0 et la longueur du tableau et accéder à l'élément à l'index:

let randx = xAxisSpawnLocations[Int(arc4random_uniform(UInt32(xAxisSpawnLocations.count)))] 
obstacle.position = CGPoint(x: randx, y: yAxisSpawnLocations[0]) 
+0

plus grande erreur de débutant par moi j'ai oublié tout sur les index. xD Mais oui cela a résolu mon problème merci. – Astrum