問答與選擇-Undertale問與答App

我選擇的主題是Undertale,這是一款小品遊戲,跟一般RPG遊戲不同,是史上第一款號稱不殺敵人就可以通關的遊戲,會選擇他也是因為他真的給我帶來很大的感觸,說是神作無異議,我App裡主要就是問一些有玩遊戲都會知道的一些知識。

學習目的
-學習變數
-for迴圈
-if else
-array
-類別和物件
-亂數
-自訂資料型別
-viewDidLoad

我直接從執行階段開始講起給大家提供一個簡單的概念,就不說如何製作了,畢竟太長了。

1.首先開始畫面時,就會顯示題數、問題、選項

這裡就要先在viewDidLoad裡使用自訂函數showQuestion()去控制畫面中的Label跟Button的字串


override
func viewDidLoad() {
super.viewDidLoad()//讓題目陣列亂掉以達到亂數目的,這裡使用到的questions是自訂的陣列,接下來會補充
questions.shuffle()
showQuestion()}//我會自訂一個func來方便使用改變題目與選項
func
showQuestion(){
//抓questions陣列裡的問題字串
questionLabel.text = questions[question_count].question
//將畫面中選項的Button利用Outlet Collection然後用for in給每個選項設置字串
for
choice in choiceBtnOutlet{
choice.setTitle(questions[question_count].choice[choice.tag], for: .normal)}//用來計算答題數還有顯示第幾題
question_count += 1
choiceNumberLabel.text = "第\(question_count)題" questionNumberLabel.text = "Q\(question_count):"}

2.點擊選項判斷對與否

這裡利用if else來判斷選擇的選項是否跟答案一樣

@IBAction func choiceButton(_ sender: UIButton) {//用來判斷與答案是否正確,去抓Button標題來確認questions的答案
if
sender.currentTitle == questions[question_count-1].answer{
print("正確答案") score += 10 } else { print("錯誤") }//question_count是目前到達第幾題,用來判斷是否答完全部題目
if
question_count == questions.count {
print("結束") }else{//如果沒有結束則繼續 }}

3.我們會使用到的變數還有自訂函數

//用來計算你進行到哪一題
var
question_count = 0
//用來計算總分
var
score = 0
//自訂問題的資料型別
struct
QandA{
var question:Stringvar choice:[String]=[]var answer:String}//利用自訂的型別來完成題目Array
var
questions = [
QandA(question: "請問現在問你問題的是誰?",choice:
["Papyrus","Sans","W.D.Gaster"],answer: "Sans"),
QandA(question: "請問第一個掉進地下世界的人是誰?",choice:
["Toriel","Chara","Frisk"],answer: "Chara"),
QandA(question: "Undyne在垃圾場相識並喜歡上的是誰?",choice:
["Papyrus","玩家操控的角色","Alphys"],answer: "Alphys")
]

4.剩下就是細節的部分,看是要讓圖片改變或是畫面消失出現,效果如下圖

主題不難只要釐清邏輯順序就能嘩啦嘩啦的寫出來了,但是花費我一天的時間,主要是找素材的部分很麻煩,還有畫面調整也花了我近半的時間

GitHub:

--

--