在Swift中将随机元素设置为变量

时间:2019-12-07 23:48:06

标签: swift xcode

我正在尝试制作一个游戏,在其中按下卡的背面,它会显示随机卡,然后从卡组阵列中删除该卡。当我模拟程序时,它会随机运行一段时间,然后给我“索引超出范围”错误。

有人看到我做错了什么吗?

var cardDeck = [card1, card2, card3 etc....]

var randomCard: Int = 0




@IBAction func row1card5tap(_ sender: UITapGestureRecognizer) {

    randomCard = Int.random(in: 0...51)

    if cardDeck.contains(cardDeck[randomCard]) {
        row1card5.image = cardDeck[randomCard+1]
        cardDeck.remove(at: randomCard)

        print("removed:" + "\(cardDeck[randomCard])")
    } else {
        print("card already removed")
    }
}

2 个答案:

答案 0 :(得分:1)

在下标之前,请确保数组计数大于requestIndex + 1。

 var cardDeck = [card1, card2, card3 etc....]

 var randomCard: Int = 0

 @IBAction func row1card5tap(_ sender: UITapGestureRecognizer) {

   randomCard = Int.random(in: 0...51)

   if cardDeck.count > randomCard + 1 {
     row1card5.image = cardDeck[randomCard+1]
     cardDeck.remove(at: randomCard)

     print("removed:" + "\(cardDeck[randomCard])")
   } else {
     print("card already removed")
   }
 }

答案 1 :(得分:1)

如果需要

  

它显示一张随机卡片,然后从卡片组阵列中删除该卡片

然后随机数组的上限应始终是牌组中当前的牌数

var cardDeck = [card1, card2, card3 etc....]

@IBAction func row1card5tap(_ sender: UITapGestureRecognizer) {
    if cardDeck.isEmpty { return }
    let randomIndex = Int.random(in: 0..<cardDeck.count)
    row1card5.image = cardDeck[randomIndex]
    cardDeck.remove(at: randomIndex)
} 
相关问题