畫面上顯示2個label,一個問題label,一個答案label。 2個button,一個”下一題”button,一個”顯示答案” button。
全部10個問題,問題會循環。一開始答案label空白,點選”顯示答案”button後才會顯示答案。
進階題:
選擇題。每題有四個選項,答對一題加 10 分。題庫有20題,隨機出其中的十題,答完十題後算總分。
這次作業用到幾個新學到的技巧:
物件陣列
//題目資料
class Question {
var question = "" //題目
var opt1 = "" //選項一
var opt2 = "" //選項二
var opt3 = "" //選項三
var opt4 = "" //選項四
var ans = 0 //正確答案
init(question: String, opt1: String, opt2: String, opt3: String, opt4: String, ans: Int) {
self.question = question
self.opt1 = opt1
self.opt2 = opt2
self.opt3 = opt3
self.opt4 = opt4
self.ans = ans
}
}
//題庫
var questionList:[Question] = [
Question(question: "「小強」兩字首次出現在?",
opt1: "功夫",
opt2: "少林足球",
opt3: "食神",
opt4: "唐伯虎點秋香.",
ans: 4),
Question(question: "「地球是很危險地,你快點回火星去吧」出自?",
opt1: "逃學威龍",
opt2: "少林足球.",
opt3: "食神",
opt4: "整人專家",
ans: 2),
Question(question: "打敗整人之霸後,講的第一句話?",
opt1: "你到底是整人界的第一高手.",
opt2: "哈哈哈",
opt3: "恭喜 恭喜",
opt4: "你死定了",
ans: 1),
::::
::::
::::
]
讀取這種陣列的方式 就跟一般 class 存取一樣,如:
questionList[n].question //題目
questionList[n].ans //答案
另外 讀陣列 n 的型態必須是 Int 不能其它數字型態
例如
var n:Int = 3
questionList[n].question //正確
var n:UInt32 = 3
questionList[n].question //錯誤
可以這樣
questionList[ Int(n) ].question //正確
按鈕 @IBACTION
這四個是 Button
每一個按鈕都要有一段相對應的程式碼
例如
@IBAction func pressButton1(_ sender: Any) {
//按鈕一do something
}
@IBAction func pressButton2(_ sender: Any) {
//按鈕二do something
}
一個按鈕就要來一段相同的程式碼,若是做個計算機有 10 幾個按鈕都做「類似的事」就要寫個 10幾段幾乎相同的code!! 那來設計個工程計算機呢?
能不能所有按鈕都連到同一段 action? (只用一個 function 解決?)
可以的,就這樣
@IBAction func pressAnswerButton(_ sender: Any) {
//這兩行取得按鈕的 tag 編號 (這個 tag 請參考後面這張圖,tag必須是數字)
let button = sender as! UIButton
let index = button.tag
//do something
}
以上.感謝 赤木gatesakagi 的指導
手勢操作
如上圖,答對後,下方顯示一張恭喜的圖片
我們希望按下這圖片後,自動跳到下一題
但 Image View 其實是不能「按」的
要再加上「Tap Gesture Recognizer 」就是手勢操作
手勢操作有好幾種(如下),不過還沒研究///
這裡用到的是「Tap Gesture Recognizer」
1.設定方式如下
2. 如下圖拉個線,再 key 上程式碼就 Ok
用戶按上面那張「超跑鋼圈」圖時,就會執行這段程式碼
完整程式碼 github:(有誤的地方請指教)
Contribute to homework9_1 development by creating an account on GitHub.github.com
後記:
coding 2hrs,處理畫面、圖片 3hrs+
作業寫到第9集,還沒碰到惱人的驚嘆號、問號….
看過 OC 還有同一行出現了 7,8組 [] ,又有一堆加號、減號,這是@#$$%#%!!