2016-02-08 3 views
1

Я делаю ловкую игру, я пытаюсь удалить два изображения из массива, чтобы они снова не появлялись снова, когда первая случайная карта и вторая случайная карта совпадали. Есть ли способ сделать это? Благодаряудалить совпадающие изображения из двух массивов

var cardNamesArray: [String] = ["sad", "sleepy","angry"] 

var cardNamesArray2: [String] = ["triste", "cansado","enfadado"] 

Генерирует случайную карту для первого массива

firstRandomNumber = Int (arc4random_uniform(3)) 
    let firstCardString:String = self.cardNamesArray[firstRandomNumber] 
    self.FirstCardImageView.image = UIImage(named: firstCardString) 

Генерирует случайную карту для второго массива

SecondRandomNumber = Int (arc4random_uniform(3)) 
    let SecondCardString:String = self.cardNamesArray2[SecondRandomNumber] 
    self.SecondCardImageView.image = UIImage(named: SecondCardString) 

Если они совпадают игрок забьет 1 очко

 @IBAction func SnapButtonTapped(sender: UIButton) { 

     if firstRandomNumber == SecondRandomNumber { 

     print("index match") 

     self.playerScore += 1 
     self.playerScoreLabel.text = String(self.playerScore 

    } 

ответ

1

Почему бы вам не попробовать для удаления изображений из самого массива. Как только случайное число совпадает, вы можете это сделать!

if firstRandomNumber == SecondRandomNumber { 

    print("index match") 
    self.playerScore += 1 
    self.playerScoreLabel.text = String(self.playerScore 
    cardNamesArray.removeAtIndex(firstRandomNumber) 
    cardNamesArray2.removeAtIndex(SecondRandomNumber) 

    if cardNamesArray.count == 0 && cardNamesArray2.count == 0{ 
     print("User Won") 
    }else{ 
     print("Continue Playing") 
    } 
} 

Краш Update:

Заменить ниже двух строк в коде с моим

firstRandomNumber = Int (arc4random_uniform(UInt32(cardNamesArray.count))) 

SecondRandomNumber = Int(arc4random_uniform(UInt32(cardNamesArray2.count))) 
+0

проблема в том, что когда они совпадают, игра вылетает, когда игрок снова создает случайную карту. – Miguel

+1

@Sam См. Обновленный ответ! –

+0

"не может преобразовать значение типа 'int' в ожидаемый тип аргумента 'UInt32' – Miguel

1

Вы можете использовать объект словаря в массиве.

Вместо

var cardNamesArray: [String] = ["sad", "sleepy","angry"] 

Вы можете использовать

Class CardItem{ 

    var name = "" 
    var isDisplayed:Boolean? 

} 

И теперь

var cardNamesArray: [CardItem] = [CardItem(name:"sad",isDisplayed:false), CardItem(name:"sleepy",isDisplayed:false),CardItem(name:"angry",isDisplayed:false)] 

Вот ваш случайный кусок:

SecondRandomNumber = Int (arc4random_uniform(3)) 

вар uniqueItem = self.cardNamesArray2 [SecondRandomNumber]

пусть SecondCardString: String = uniqueItem.name

self.SecondCardImageView.image = UIImage (названный: SecondCardString)

uniqueItem .isDisplayed = true

Итак, когда вы в следующий раз генерируете случайное число r просто проверьте свойство isDisplayed элемента.

С уважением

Смежные вопросы