comparison GeoQuiz/Controllers/GameProtocol+Extension.swift @ 34:6ec51a4ca897

fix crash when asking new questions
author Dennis C. M. <dennis@denniscm.com>
date Sat, 12 Nov 2022 14:23:05 +0100
parents 6d574bd1644f
children
comparison
equal deleted inserted replaced
33:6d574bd1644f 34:6ec51a4ca897
66 return 66 return
67 } 67 }
68 68
69 var userChoices = [String: T]() 69 var userChoices = [String: T]()
70 70
71 while userChoices.count < 2 { 71 let correctAnswer = data.shuffled().first(where: { !dataAsked.keys.contains($0.key) })!
72 dataAsked[correctAnswer.key] = correctAnswer.value
73 userChoices[correctAnswer.key] = correctAnswer.value
74
75 while userChoices.count < 3 {
72 let choice = data.randomElement()! 76 let choice = data.randomElement()!
73 userChoices[choice.key] = choice.value 77 userChoices[choice.key] = choice.value
74 } 78 }
75 79
76 let correctKey = data.keys.shuffled().first(where: { 80 self.correctAnswer = correctAnswer
77 !userChoices.keys.contains($0) && // Avoid duplicated items
78 !dataAsked.keys.contains($0) // Avoid items already asked
79 })!
80
81 let correctValue = data[correctKey]!
82
83 userChoices[correctKey] = correctValue
84 dataAsked[correctKey] = correctValue
85 correctAnswer = (key: correctKey, value: correctValue)
86 self.userChoices = userChoices 81 self.userChoices = userChoices
87 } 82 }
88 83
89 // MARK: - Answer question 84 // MARK: - Answer question
90 func answer(choice: (key: String, value: T), wrongMessage: String) { 85 func answer(choice: (key: String, value: T), wrongMessage: String) {
103 ask() 98 ask()
104 } else { 99 } else {
105 haptics.error() 100 haptics.error()
106 playSound("wrongAnswer") 101 playSound("wrongAnswer")
107 102
108 // withAnimation(.easeIn(duration: 0.5)) { 103 withAnimation(.easeIn(duration: 0.5)) {
109 // livesScaleAmount += 1 104 livesScaleAmount += 1
110 // userLives -= 1 105 userLives -= 1
111 // } 106 }
112 107
113 wrongAnswers[choice.key] = choice.value 108 wrongAnswers[choice.key] = choice.value
114 109
115 if userLives == 0 { 110 if userLives == 0 {
116 alertTitle = "🤕 Game over 🤕" 111 alertTitle = "🤕 Game over 🤕"