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)))还有一个问题,如何结束数组,使其不超出范围?如果替换了上面的行,则不会超出范围。一旦数组计数为零,则不会生成随机数!