問答題App
Published in
11 min readMay 22, 2020
用腦筋急轉彎來製作一個問答APP~~
可以自行選擇要顯示的題數 ⍒
先在程式內宣告一個全域變數(每個地方都可以使用) QUESTION_QUANTITY,接著設置按鈕(IBAction)跳轉到下一頁
//// MenuViewController.swift// Q&A//import UIKit
// 顯示題目數量var QUESTION_QUANTITY = 0class MenuViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func didTapTenButton(_ sender: Any) { QUESTION_QUANTITY = 10 } @IBAction func didTapFiftyButton(_ sender: Any) { QUESTION_QUANTITY = 50} @IBAction func didTapOneHundredButton(_ sender: Any) { QUESTION_QUANTITY = 100 }}
到題目頁,先宣告兩組陣列(所有問題和答案)
let descriptionList = ["世界上除了火車啥車最長?", "打狗要看主人,那打老虎要看什麼?", "從1到9哪個數位最勤勞,哪個數位最懶惰?", "猩猩最討厭什麼線?", "狼來了(猜水果)?", "這兩塊冰下有鯉魚(四字成語)?", "豆腐為什麼能打傷人?", "什麼東西晚上才生出尾巴呢?", "什麼地方的路最窄?", "什麼「海」沒有邊?", "脫了紅袍子,是個白胖子去了白胖子,是個黑圓子。猜一植物?" ,"做什麼事,一隻眼開一隻眼閉會比較好?", "一條小船要渡37人,一次只能有7人,幾次能渡完?", "蝸牛從上海到北京只用了一分鐘,為什麼?", "什麼東西咬牙切齒?", "什麼酒價格最貴", "什麼事一個人無法做,一群人做沒意思,兩個人做剛剛好?", "會飛不是鳥,像鼠不是鼠。白天躲暗處,夜晚捉害蟲。", "上邊毛,下邊毛,中間一個黑葡萄。", "五個兄弟,住在一起,名字不同,高矮不其。", "用豬肝和熊膽作成的神奇肥皂(猜4字成語)" ,"什麼書買不到?", "人在不渴時也需要的是什麼水?", "什麼人可以飯來張口,衣來伸手?", "和尚打著一把傘,是一個什麼成語?", "三個孩子吃三個餅要用3分鐘,九十個孩子九十個餅要用多少時間?", "3個人3天用3桶水,9個人9天用幾桶水?", "什麼樣的河人們永遠也渡不過去?", "賣水的人看到河會怎麼想?", "為什麼沖天炮射不到星星?", "什麼馬不會跑?" ,"什麼虎會嚇人但並不吃人?", "煮一個蛋要四分鐘,煮八個蛋要幾分鐘?", "蘿蔔喝醉了,會變成什麼?", "什麼東西不怕布,只怕石頭?", "什麼地方只要進去一個人就客滿?", "伯父的弟媳,但不是叔母,那她是誰?", "一人一點是什麼字?", "人們心中最熱烈,最難以滿足的激情之一是什麼?", "一場大雨,忙著耕種的農人紛紛走避,卻仍有一人不走,為什麼?", "某人患了高血壓,醫生說不要吃太鹹就沒事了,但是他一聽卻決定要搬家,為什麼?" ,"心有餘而力不足作何解釋?", "你手上拿著弓箭,夜晚看見兩個狼人,你會先射哪一個?", "什麼時候太陽會打從西邊升起?", "哪一種草的生命力最強?", "什麼人最喜歡拍照?", "左眼跳財,右眼跳災,如果左右眼皮一起跳呢?", "夜裡遲歸的丈夫,不小心驚醒「恰北北」的太太,可以用什麼方法脫困?", "睡美人最怕什麼?", "滿滿一杯啤酒,怎樣才能先喝到杯底的酒?", "在什麼地方,將軍和元帥完全相等?" ,"小芬對小芳說:「後天的大前天的後天,也就是昨天的昨天的大後天是我的生日,請來參加我的生日會。」小芳應該什麼時候赴約呢?", "酒喝多了傷人,不喝呢?", "什麼人的心腸最好?", "什麼樣的人見到陽光就會躲得無影無蹤?", "打什麼最省力又舒服?", "—什麼東西越熱越愛出來?", "爸爸丟了一樣東西,為什麼媽媽還特別高興?", "什麼書必須買兩本?", "三個同學下跳棋,共下了45分鐘,問每個同學下了多少時間?", "外國人的長,中國人的短,公公沒有,和尚用不著" ,"什麼東西不用的時候朝下,用的時候朝前?", "一輛出租車在公路上正常行駛,並且沒有違反任何交通規則卻被一個警察給攔住了,請問為什麼?", "什麼酒不能喝?", "老王很有錢,可別人說他是個奴隸,為什麼?", "什麼東西只有一隻腳卻能跑遍屋子的所有角落", "歲數越來越大,身體越來越小,面貌日新月異,家家不可缺少,是什麼東西?", "用3,3,8,8四個數只用加減乘除,如何算出24?", "古今中外的偉人,都有的共通點是什麼?", "一朵盛開在家裡的花,卻被關在籠子裡。請問這是什麼?", "金鐘獎、金馬獎、金像獎哪個對國家貢獻最大?" ,"什麼東西放在火中不會燃,放在水中不會沉?", "什麼東西裝玻璃,愛把鼻子當馬騎?", "什麼花很快就不見了?", "哪一種鴨子顏色最漂亮?", "從天上飛機裡跳出來,最怕遇見什麼?", "什麼東西沒有價值但大家又很喜歡?", "什麼袋每個人都有,卻很少有人借給別人?", "什麼樣的人最喜歡長髮?", "烤肉的時侯最怕什麼?", "為什麼胖的人比瘦的人怕熱?" ,"什麼球身上長毛?", "什麼是治療「口臭」的最佳方案?", "什麼東西越大越沒有用? ", "世界上什麼東西最寶貴?", "什麼樣的房子不能住人?", "世界上最小的郵筒(用一成語形容)", "你的阿姨有個姐姐,但你不叫她阿姨,她是誰?", "自己的缺點令自己討厭是在什麼時候?", "什麼地方很輕鬆就可以爬上去,卻很難下得來?", "什麼叫做「緩兵之計」?" ,"小紅帽從大野狼面前走過,大野狼為何沒有發現她?", "華盛頓小時候砍倒他父親的櫻桃樹時,他父親為什麼不馬上處罰他?", "貝多芬給了我們什麼樣的啟示?", "閉著眼睛也看得見的是什麼?", "報紙上登的消息未必都是真的但是什麼消息絕對假不了?", "出去的時候光著身子,回到家才穿上衣服的是什麼?", "什麼東西越擦越小?", "什麼地方物品售價愈高,客人愈高興?", "為什麼有人說:「情人眼裡出西施」?"]let answerList = ["塞車", "看你有沒有「種」", "1懶惰,2勤勞 (一(1)不做二(2)不休。)", "平行線沒有相交(香蕉)。", "楊桃 (羊逃)", "彬彬有禮(冰冰有鯉)", "因為是凍豆腐", "流星", "冤家路窄", "苦海無邊", "荔枝" ,"射擊", "六次,因為每次得回來一個划船的", "因為在地圖上", "拉鏈", "喜酒", "說悄悄話", "蝙蝠", "眼睛", "手指", "肝膽相照(香皂)" ,"遺書", "薪水", "嬰兒", "無法(髮)無天", "三分鐘", "九桶水", "銀河", "這些都是錢", "因為星星會閃", "木馬" ,"壁虎", "四分鐘", "紅蘿蔔", "剪刀", "廁所", "媽媽", "太", "好奇心", "它是稻草人", "因為他住在台南的鹽水打算搬到台北的淡水" ,"我知道意思但不會解釋", "月亮", "從鏡子裡", "牆頭草風吹兩邊倒", "觀光客", "破財消災", "假裝夢遊", "失眠", "用吸管", "在中國象棋中" ,"明天", "傷心", "身心健康的人", "雪人", "瞌睡", "汗", "他丟掉了壞習慣.", "結婚證.", "45分鐘", "名字" ,"鑰匙", "警察想做出租車", "碘酒", "老王是個守財奴", "掃帚", "日曆", "8/(3-8/3)=24", "都是媽媽生的", "電風扇", "金鐘獎(精忠報國)" ,"冰塊", "眼鏡", "火花", "燒鴨", "忘帶降落傘", "無價之寶", "腦袋", "理髮師.", "肉跟你裝熟.", "因為被曬的面積比較大" ,"羽毛球", "閉嘴", "破洞", "時間", "蜂房", "難以置信", "媽媽", "在別人身上看到時", "床上", "改天再告訴你" ,"小紅帽今天沒有戴帽子", "因為他手頭上還有斧頭", "背了就會多分", "夢", "日期", "衣架", "橡皮擦", "當鋪", "因為愛情使人盲目"]
然後在宣告其他需要用到的變數↓
// 所有題目var questions = [Question]()// 每次要顯示的題目var showQuestions = [Question]()
// 目前題目var currentIndex = 0
override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.
// 將各個描述與答案組成一個完整的問題for i in 0..<self.descriptionList.count { let question = Question() question.description = "\(self.descriptionList[i])" question.answer = "\(self.answerList[i])" questions.append(question)}// 重新排列questions的順序,讓每一次出現的問題順序不同self.questions.shuffle()
// 取出要顯示的筆數for i in 0..<QUESTION_QUANTITY { self.showQuestions.append(self.questions[i])}// 顯示題號self.questionNumber.text = "NO.\(self.currentIndex+1)"// 顯示第一題的描述self.questionLabel.text = self.showQuestions[currentIndex].description}// MARK: -IBAction@IBAction func showAnswer(_ sender: UIButton) { self.answerLabel.text = self.showQuestions[currentIndex].answer}@IBAction func nextQuestion(_ sender: Any) { // 判斷是否為最後一題(如果是的話,繼續再從第一題開始) if currentIndex == self.showQuestions.count - 1 { currentIndex = 0
self.questionNumber.text = "NO.\(self.currentIndex+1)" self.questionLabel.text = "\(self.showQuestions[self.currentIndex].description)"
self.answerLabel.text = ""
}else { currentIndex += 1
self.questionLabel.text = self.showQuestions[self.currentIndex].description self.questionNumber.text = "NO.\(self.currentIndex+1)" self.answerLabel.text = "" }} @IBAction func didTapPop(_ sender: Any) { // 回到上一頁(可以重新選擇要顯示的總題數) self.navigationController?.popViewController(animated: true) }}
Demo:
GitHub :