【发布时间】:2020-07-06 17:13:02
【问题描述】:
我有一个循环遍历纸牌游戏轮次的脚本,在这种情况下,我有 4 张牌和 10 轮。
当卡片数组为空时,我想重新填充卡片数组并再次洗牌并继续。
但不知何故,重新填充不起作用,我收到错误 Index out of range
这是我的代码:
struct card {
var name: String
var val: Int
}
var allCards: [card] = []
allCards.append(card(name: "card A", val: 10))
allCards.append(card(name: "card B", val: 3))
allCards.append(card(name: "card C", val: 5))
allCards.append(card(name: "card D", val: 5))
class rounds {
var roundNumber = 10
var cards = allCards
func playRounds() {
switch self.roundNumber {
case 10:
self.cards.shuffle()
self.roundNumber -= 1
case 1...9:
if cards.count == 0 {
print("Cards shuffled")
self.cards = allCards
self.cards.shuffle()
}
self.cards.removeFirst()
self.roundNumber -= 1
default:
print("End of game")
}
}
}
var playGame = rounds()
for _ in (0...10) {
playGame.playRounds()
print("Count of cards: \(playGame.cards.count)")
print("Round: \(playGame.roundNumber)")
print("Card name: \(playGame.cards[0].name)\n")
这是我在调试窗口中的结果:
卡数:4 回合:9 卡名:卡 A
卡数:3 回合:8 卡名:卡 D
卡数:2 回合:7 卡名:卡 B
卡数:1轮:6卡名:卡C
卡数:0 回合:5 致命错误:索引超出范围:文件
在 case 1...9 的 if 语句中,我有一个 print("Cards Shuffled") 我在调试窗口中看不到,对我来说它看起来有一个if 语句中的问题,但我不明白这有什么问题。
顺便说一句。底部的 for 循环用于测试目的,当这个脚本工作时,我会将此脚本分配给一个按钮
【问题讨论】: