fre*_*dnd 2 arrays random ios swift swift2
我的卡由52张卡片组成,因此我array为他们创建了一张卡片,当用户点击屏幕时,会显示一张卡片.
我希望当卡被拉出时,将来再也无法拉出.我曾经removeAtIndex从拉出卡片中取出array.pullCard当用户在任何地方触摸屏幕时调用该函数:
// Cards
let card1 = (1, "AS", "RULE 1")
let card2 = (2, "2", "RULE 2")
let card3 = (3, "3", "RULE 3")
let card4 = (4, "4", "RULE 4")
let card5... (to 52)
// Array
var cards = [
card1,
card2,
card3,
card4,
card5... (to 52)
]
func pullCard() {
let randomCard = Int(arc4random_uniform(UInt32(cards.count)))
let cardsIndex = randomCard - 1
let card = cards[cardsIndex]
cards.removeAtIndex(cardsIndex)
}
Run Code Online (Sandbox Code Playgroud)
例如,游戏拉出卡32,因此将其从阵列中删除,如果游戏拉同一张卡,则因为卡被删除而崩溃.
我试图使用if语句:
if cards[cardsIndex] == nil {
pullCard()
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.请帮我 :)
我认为这里有一个问题:
let cardsIndex = randomCard - 1
Run Code Online (Sandbox Code Playgroud)
它应该是:
let cardsIndex = randomCard
Run Code Online (Sandbox Code Playgroud)
事实上,你是在和之间randomCard随机生成的.Int0(cards.count - 1)
所以,randomCard已经是一个有效的指标为cards,没有必要减去1.当随机生成的数字确实发生时0,您尝试访问索引-1,cards这在此Universe中是不好的.
我承认这个错误与你在问题中给出的描述完全不符,但我建议你修复它并再试一次.