Arrays 从两个阵列中删除匹配图像

Arrays 从两个阵列中删除匹配图像,arrays,swift,Arrays,Swift,我正在制作一个快照游戏,我试图从一个数组中删除两个图像,这样当第一张随机牌和第二张随机牌匹配时,它们就不会再次出现。我有什么办法可以做到这一点吗?谢谢 var cardNamesArray: [String] = ["sad", "sleepy","angry"] var cardNamesArray2: [String] = ["triste", "cansado","enfadado"] 为第一个阵列生成随机卡 firstRandomNumber = Int (arc4random

我正在制作一个快照游戏,我试图从一个数组中删除两个图像,这样当第一张随机牌和第二张随机牌匹配时,它们就不会再次出现。我有什么办法可以做到这一点吗?谢谢

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

    }

为什么不尝试从阵列本身删除图像呢。一旦随机数匹配,您就可以这样做

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")
    }
}
崩溃更新:

用我的代码替换下面两行代码

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

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

可以在数组中使用dictionary对象

而不是

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))

var uniqueItem = self.cardNamesArray2[SecondRandomNumber]

let SecondCardString:String = uniqueItem.name

self.SecondCardImageView.image = UIImage(named: SecondCardString)

uniqueItem.isDisplayed = true

因此,下次生成随机数时,只需检查项目的isDisplayed属性。

问题是,当它们匹配时,当玩家再次生成随机卡时,游戏会崩溃。“无法将类型为“int”的值转换为预期参数类型“UInt32”firstRandomNumber=int(arc4random_uniform(UInt32(cardNamesArray.count)))还有一个问题,如何结束数组,使其不超出范围?如果替换了上面的行,则不会超出范围。一旦数组计数为零,则不会生成随机数!