Mercurial > public > geoquiz
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 🤕" |