#ios #swift
#iOS #swift
Вопрос:
Привет, я создаю простую игру в кости и новичок в программировании. У меня есть изображения кубиков от 1 до 6. Я знаю, как его свернуть и применить random.
@IBAction func rollPressed(_ sender: UIButton) {
let diceArray=[#imageLiteral(resourceName: "DiceOne"),#imageLiteral(resourceName: "DiceTwo"),#imageLiteral(resourceName: "DiceThree"),#imageLiteral(resourceName: "DiceFour"),#imageLiteral(resourceName: "DiceFive"),#imageLiteral(resourceName: "DiceSix")]
diceFour.image=diceArray.randomElement()
}
вот так.
Но я хочу сопоставить изображение с типом данных Int и выполнить случайное.
И, наконец, я могу распечатать результат в значении типа данных Int.
Я пытаюсь использовать словарь, например
let diceDictionary = [#imageLiteral(resourceName: "DiceOne"):1,#imageLiteral(resourceName: "DiceTwo"):2,#imageLiteral(resourceName: "DiceThree"):3,#imageLiteral(resourceName: "DiceFour"):4,#imageLiteral(resourceName: "DiceFive"):5,#imageLiteral(resourceName: "DiceSix"):6]
но я застрял на том, как я могу получить значение.
Пожалуйста, кто-нибудь мне поможет?
Ответ №1:
Вам не нужен словарь. Вместо того, чтобы иметь дело с изображениями, занимайтесь индексами.
let diceArray = [#imageLiteral(resourceName: "DiceOne"),#imageLiteral(resourceName: "DiceTwo"),#imageLiteral(resourceName: "DiceThree"),#imageLiteral(resourceName: "DiceFour"),#imageLiteral(resourceName: "DiceFive"),#imageLiteral(resourceName: "DiceSix")]
@IBAction func rollPressed(_ sender: UIButton) {
let index = Int.random(in: 0..<diceArray.count)
diceFour.image = diceArray[index]
print(index)
}
Имейте в виду, что индексы типов коллекций основаны на нуле.
Ответ №2:
Было бы лучше Swift
использовать перечисление :
struct DiceFace: Int, CaseIterable {
case one = 1
case two = 2
...
case six = 6
var image: UIImage {
switch self {
case .one:
return #imageLiteral(resourceName: "DiceOne")!
...
case .sex:
return #imageLiteral(resourceName: "DiceSix")!
}
}
}
Позже вы можете создать массив со всеми своими гранями, используя DiceFace.allCases или вручную :
let allFaces: [DiceFace] = [.one, .two, .three, .four, .five, .six]
Затем вы можете получить доступ к изображению лица с помощью :
let randomFace = allFaces.shuffle().first!
let image = myFace.image