選擇題APP-猜燈謎

Lydia
彼得潘的 Swift iOS / Flutter App 開發教室
6 min readMay 31, 2020

@IBOutlet@IBAction、shuffle、init、陣列[圖片題目、選項、答案]

開始『先規劃介面,再製作功能』的自我訓練後,嗯…進步的空間還很大~~

小時候元宵節傳統活動的猜燈謎,成了這次的主題。
(整面報紙有滿滿的燈謎,已經不曉得現在是否還健在。)

選擇題的功能,卡住的地方在於:
1.圖片名稱String轉image。
2.又卡在ImageView內容空空,沒正確安置圖片進去。

EX: imageView.image = UIImage(named: “”)

答對+10分;打錯-15分
import UIKitclass ViewController: UIViewController {@IBOutlet weak var countLabel: UILabel!@IBOutlet weak var messageLabel: UILabel!@IBOutlet weak var queImageView: UIImageView!@IBOutlet var optionBtn: [UIButton]!@IBOutlet weak var startButton: UIButton!@IBOutlet weak var reButton: UIButton!var count = 1var score = 0var options = “”var rightAnswer = “”override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.queDate.shuffle()countLabel.text = “第 \(count)題”messageLabel.text = “得分: \(score)分”select()}@IBAction func selectBtn(_ sender: UIButton) {count = count + 1countLabel.text = “第 \(count)題”if sender.currentTitle == rightAnswer {countLabel.text = “第 \(count)題”score = score + 10messageLabel.text = “得分: \(score)分”}else if sender.currentTitle != rightAnswer{score = score — 15messageLabel.text = “得分: \(score)分”}if count == 10 {//生出一個alertlet alertController = UIAlertController(title: “(⁎⁍̴̛ᴗ⁍̴̛⁎)‼ 遊戲結束”,message: “獲得: \(score)分”,preferredStyle: .alert)//參數 preferredStyle 傳入 .alert 將顯示中間彈出視窗//利用 UIAlertAction 生成視窗上顯示的按鈕let okButton = UIAlertAction(title: “確定”,style: .default)alertController.addAction(okButton)self.present(alertController, animated: true, completion: nil)}else{messageLabel.text = “得分: \(score)分”select()}}@IBAction func replayButton(_ sender: UIButton) {count = 0score = 0countLabel.text = “第 \(count)題”messageLabel.text = “得分: \(score)分”queDate.shuffle()reButton.isHidden = falseselect()}func select(){queDate.shuffle()queImageView.image = UIImage(named: queDate[count].queImage)options = “\(queDate[count].option)”//這一行是選項亂數queDate[count].option.shuffle()//這一行是選項亂數後,填入的位置。亂數完的=[0,1,2,3]順序optionBtn[0].setTitle(queDate[count].option[0], for: UIControl.State.normal)optionBtn[1].setTitle(queDate[count].option[1], for: UIControl.State.normal)optionBtn[2].setTitle(queDate[count].option[2], for: UIControl.State.normal)optionBtn[3].setTitle(queDate[count].option[3], for: UIControl.State.normal)//關掉上面亂數填入順序那邊,開這行,會出現兩種相同Answer的選項。// for i in 0…3{// optionBtn[i].setTitle(queDate[count].option[i], for: UIControl.State.normal)// }rightAnswer = queDate[count].answerreButton.isHidden = false}}

Githug:

參考資料:

--

--