Ich beginne gerade, Swift zu lernen und finde nicht heraus, wie man ein zufälliges Array von Swift auswählt, ohne dass es jeden Klick für das Konzentrationsspiel ändert. Im Wesentlichen ist mein Ziel, einen zufälligen Wert, der ein Array ist, aus einem Wörterbuch auszuwählen und für den Rest des Laufs zu verwenden. Das Problem, auf das ich stoße, ist, dass mein zufälliger Index randomThemeIndex
jeden Klick ändert und nicht das gleiche Thema für alle Karten im Spiel behält. Daher werden verschiedene Elemente aus jedem Wert im Wörterbuch ausgewählt und nicht nur ein Wert/Array. Hier ist, was ich habe bisher:Auswählen eines zufälligen Wertes (Array) aus dem Wörterbuch
var themeChoices = ["halloween": ["", "", "", "", "", "", "", "", "", ""],
"animals": ["", "", "", "", "", "", "", "", "", ""],
"faces": ["", "", "", "", "", "", "", "", "", "", ""],
"nature": ["", "", "", "", "", "", "", "", "", "", "❄️", ""],
"food": ["", "", "", "", "", "", "", "", "", "", "", ""],
"sports": ["⚽️", "", "", "", "", "⛳️", "", "", "♀️", "", "️"]]
var emoji = [Int:String]()
func emoji(for card: Card) -> String {
let themeCount = themeChoices.count
let randomThemeIndex = Int(arc4random_uniform(UInt32(themeCount)))
print(randomThemeIndex)
var randomTheme = Array(themeChoices.values)[randomThemeIndex]
if emoji[card.identifier] == nil, randomTheme.count > 0 {
let randomCardIndex = Int(arc4random_uniform(UInt32(randomTheme.count - 1)))
emoji[card.identifier] = randomTheme.remove(at: randomCardIndex)
}
return emoji[card.identifier] ?? "?"
}
wo Ihre Karte Erklärung –
Sie eine neue Zufallszahl jedes Mal zu erzeugen Sie diese Methode aufrufen. Sie müssen ein zufälliges Thema an einer anderen Stelle auswählen, die Sie nur einmal aufrufen, und dieses Thema dann in dieser Funktion verwenden. – Paulw11
emoji [card.identifier]? Es ist nichts für ungut, aber Sie sollten zurück zu Büchern gehen. –