練習筆記 43 :問答題App-城市地標大挑戰

這次的作業練習利用 struct 建立一個新的類別

也學習建立一個空的array 再新增資料到array中,並練習亂數呼叫array中的內容

建立新的類別:

定義一個叫Question的類別,設了兩個參數分別用來儲存題目圖片的名稱跟答案

import Foundation
struct Question{
var questionImageName:String
var answer: String
}

在ViewController內宣告一個只能裝Question的空array

以及宣告一個變數index來儲存目前的題數

//產生一個只能裝Question的空array
var questions = [Question]()
//宣告index儲存目前題數
var index = 0

在viewDidLoad內建立題目

建立類別為 Question 的題目並輸入對應的參數,再用append將建立好的題目加進剛剛宣告的 questions 空array中

let question1 = Question(questionImageName: "001", answer: "法國 聖米歇爾山")
questions.append(question1)
let question2 = Question(questionImageName: "002", answer: "澳洲 雪梨歌劇院")
questions.append(question2)
let question3 = Question(questionImageName: "003", answer: "美國加州 舊金山金門大橋")
questions.append(question3)

建立function

//初始畫面 + 隨機出題
func setUI(){
questions.shuffle()
index = 0
questionImageView.image = UIImage(named: questions[index].questionImageName)
questionNumberLabel.text = "第\(index + 1)題"
answerLabel.text = " "
questionNumberSlider.value = 1
}
//跳訊息
func popOutMessage(){
let message = UIAlertController(title: "恭喜", message: "測驗結束🎉", preferredStyle:.alert)
let tryAgainAction = UIAlertAction(title: "再試一次", style: .default, handler: nil)
message.addAction(tryAgainAction)
present(message, animated: true, completion: nil)
}

建立IBAction

因為題目有20題 但是只想隨機出10題問題

所以設定當目前題數大於9時 按下下一題button 就會跳出測驗結束的訊息

並將遊戲重設

//IBAction
//下一題
@IBAction func nextQuestion(_ sender: UIButton) {
index = index + 1
if index > 9{
popOutMessage()
setUI()
}
questionImageView.image = UIImage(named: questions[index].questionImageName)
questionNumberLabel.text = "第\(index+1)題"
answerLabel.text = " "
questionNumberSlider.value = Float(index+1)
}
//公佈答案
@IBAction func showAnswer(_ sender: UIButton) {
answerLabel.text = questions[index].answer
}
//重玩

@IBAction func reset(_ sender: UIButton) {
setUI()

}

完成~~

--

--