有趣的選擇題APP
我的第一個App作品,剛寫出來的心情是非常非常的開心,且很有成就感,剛開始只是照著彼得潘教的一步一步將它完成,最後自己參雜了一堆想法,而出現了目前的作品,也因為自己的想法而搞死自己,到處上網查一些指令&請教一些高手們,從中學到了不少程式上的一些邏輯&寫法,真的很開心!
以下為程式的說明,以及遇到的一些問題&狀況!
亂數的出題&亂數的選擇function(目前出了30題,共有3個選項)
有要改變的 image label view button…等等,就拉outlet or action
比較不一樣的是choiceLabels拉的是outlet collection(array)
定義了一些全域變數,方便在其它的function內使用
一開始會將button隱藏的原因是當開始執行動畫時,若點選的話會繼續答題,導致動畫播完後看到的已經是別題了,另外這裡用到彼得潘沒教過的指令,這是在網路上查的 DispatchQueue.main.asyncAfter ,這裡的意思是當程式在執行時,因沒有下指令使其停止,故程式還是會繼續執行,而 DispatchQueue.main.asyncAfter 的目的是將此指令內部的程式丟到別的地方去執行,seconds(2) 就是丟到別的地方經過2秒後再執行,這是我對它的理解,若不對會再更正
numbers 的變數是在判斷是否為第一題,因在App的開始畫面已預設了固定第一題,故多了此變數去做判斷!
skill 的變數是在判斷目前使用的是哪個技能
這裡用到了 setBackgroundImage ,意思如同字面翻譯設定背景圖,這裡是用在更改 button 的背景圖,原本以為與更改 imageView 背景圖一樣用法,結果沒這種用法所以在這裡卡了一陣子,之後尋問高人才得解
再玩一次,這裡用到的主要是 removeAll() ,意思是如字面翻譯移除所有,將選項裡的內容先移除,然後再以亂數加入,目的只是為了亂數的選項
以下為全程式:
在寫程式的過程中卡了很多次,也花了不少時間上網&問高手求解答
問題:
- 變數的命名 — —這真的很重要,以這個為例,裡面用了很多Question question questions 光這個就搞死我了,每次都因為這個而停留想了很久,例如在選項中寫的某行程式:questions[questionNumber].choices.append(newQuestion.choices[choiceNumber]) 實在是太饒舌了!哈哈哈
- 寫輪眼技能 — — 這純粹是想法的問題,因為它的目的主要是讓選項都一樣,不管選哪一個都能答對,而剛開始我只是一昧的要求就是要讓選項都是答案,導致改了顯示正確,選擇卻還是答錯,之後換了作法…將選項移除,之後再將答案加入三次使其三個選項都是正確答案,結果發現…雖然結果如我要的,但是被家人玩出問題來,問題就是…這個的結果會變成最後的答案選項都是一樣的,最後解決此問題就是…我捨棄了一定要正確答案才能答對的這個想法,我一樣用了剛開始的做法,只是利用了技能啟動的這個變數去判斷…只要啟動此技能…不管我選的對還是錯…我都判正解
- 沒教過的指令 — — 為了做一個完整的app,想必會用到很多方式,在沒用過的方式前,我只是一昧的絞盡腦汁,想著教過的那些指令到底有什麼方式能做到,最後就是上網&問高手求解答
Show Time:
因錄製的檔案過大,故貼連結…
之後會想再加選對選錯的顯示,另外會想再加技能…等等