Я делаю игру с помощью Swift и SpriteKit, где я перемещаю объект в случайные местоположения на основе массива.Случайное число из массива без повторения одного и того же номера дважды подряд?
Массив, который состоит из CGPoints:
let easyArray = [CGPointMake(0,0), CGPointMake(126.6,0), CGPointMake(253.4,0), CGPointMake(0,197.5), CGPointMake(126.7,197.5), CGPointMake(253.4,197.5), CGPointMake(0,395), CGPointMake(126.7,395), CGPointMake(253.4,395)]
Я использую эту функцию, чтобы сгенерировать случайное число:
func randomNumber(maximum: UInt32) -> Int {
var randomNumber = arc4random_uniform(maximum)
while previousNumber == randomNumber {
randomNumber = arc4random_uniform(maximum)
}
previousNumber = randomNumber
return Int(randomNumber)
}
я использовал это, чтобы переместить объект на основе случайного числа, генерируемого :
let greenEasy = randomNumberNew(9)
let moveSelector = SKAction.moveTo(easyArray[greenEasy], duration: 0)
selector.runAction(moveSelector)
Я прочел в Интернете и обнаружил, что условие «Пока» ld сделать так, чтобы одно и то же случайное число не генерировалось дважды подряд. Но это все еще происходит.
Может ли кто-нибудь помочь мне в том, как это сделать, поэтому я не получаю одинаковый номер дважды подряд?
Вы можете использовать изменяемый массив, поместить элемент в случайный элемент на последнем месте и вызвать randomNumNew с максимальным значением-1. – Larme
Я понимаю, что вы говорите, но не могли бы вы помочь мне составить код. Я новичок, чтобы быстро и программировать в целом. Если бы вы могли предоставить прямое кодовое решение, которое было бы фантастическим. – PoisonedApps
Посмотрите http://stackoverflow.com/questions/24026510/how-do-i-shuffle-an-array-in-swift. –