//Model _ Question
import Foundation
struct Question {
let text: String
let answer: [String]
let correctAnswer: String
init(q: String, a:[String] , c:String) {
text = q
answer = a
correctAnswer = c
}
}
//Model _ QuizBrain
import Foundation
struct QuizBrain {
let quiz = [
Question(q: "Which is the largest organ in the human body?", a: ["Heart", "Skin", "Large Intestine"], c: "Skin"),
Question(q: "Five dollars is worth how many nickels?", a: ["25", "50", "100"], c: "100"),
Question(q: "What do the letters in the GMT time zone stand for?", a: ["Global Meridian Time", "Greenwich Mean Time", "General Median Time"], c: "Greenwich Mean Time"),
Question(q: "What is the French word for 'hat'?", a: ["Chapeau", "Écharpe", "Bonnet"], c: "Chapeau"),
Question(q: "In past times, what would a gentleman keep in his fob pocket?", a: ["Notebook", "Handkerchief", "Watch"], c: "Watch"),
Question(q: "How would one say goodbye in Spanish?", a: ["Au Revoir", "Adiós", "Salir"], c: "Adiós"),
Question(q: "Which of these colours is NOT featured in the logo for Google?", a: ["Green", "Orange", "Blue"], c: "Orange"),
Question(q: "What alcoholic drink is made from molasses?", a: ["Rum", "Whisky", "Gin"], c: "Rum"),
Question(q: "What type of animal was Harambe?", a: ["Panda", "Gorilla", "Crocodile"], c: "Gorilla"),
Question(q: "Where is Tasmania located?", a: ["Indonesia", "Australia", "Scotland"], c: "Australia")
]
var questionNumber = 0
var scorePoint = 0
mutating func checkAnswer(_ userAnswer: String) -> Bool {
if userAnswer == quiz[questionNumber].correctAnswer {
scorePoint += 1
return true
}else {
return false
}
}
func getQuestionText() -> String {
return quiz[questionNumber].text
}
func getChoiceName(_ number:Int) -> String {
return quiz[questionNumber].answer[number]
}
func getProgress() -> Float {
return Float(questionNumber+1) / Float(quiz.count)
}
mutating func nextQuestion(){
if questionNumber + 1 < quiz.count {
questionNumber += 1
} else {
questionNumber = 0
scorePoint = 0
}
}
func getScore() -> Int{
return scorePoint
}
}
//Controller _ ViewController
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var progressBar: UIProgressView!
@IBOutlet weak var choice1Button: UIButton!
@IBOutlet weak var choice2Button: UIButton!
@IBOutlet weak var choice3Button: UIButton!
var quizBrain = QuizBrain()
override func viewDidLoad() {
super.viewDidLoad()
updateUI()
}
@IBAction func answerButtonPressed(_ sender: UIButton) {
let userAnswer = sender.currentTitle!// True, False
let userGotItRight = quizBrain.checkAnswer(userAnswer)
if userGotItRight {
sender.backgroundColor = UIColor.green
}else{
sender.backgroundColor = UIColor.red
}
quizBrain.nextQuestion()
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(updateUI), userInfo: nil, repeats: false)
}
@objc func updateUI() {
choice1Button.setTitle(quizBrain.getChoiceName(0), for: .normal)
choice2Button.setTitle(quizBrain.getChoiceName(1), for: .normal)
choice3Button.setTitle(quizBrain.getChoiceName(2), for: .normal)
questionLabel.text = quizBrain.getQuestionText()
progressBar.progress = quizBrain.getProgress()
scoreLabel.text = "Score: \(quizBrain.getScore())"
choice1Button.backgroundColor = UIColor.clear
choice2Button.backgroundColor = UIColor.clear
choice3Button.backgroundColor = UIColor.clear
}
}
///View