我正在尝试制作一个游戏,在其中按下卡的背面,它会显示随机卡,然后从卡组阵列中删除该卡。当我模拟程序时,它会随机运行一段时间,然后给我“索引超出范围”错误。
有人看到我做错了什么吗?
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")
}
}
答案 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)
}