swift if…else… 練習

因為第一次使用 BezierPath 畫了一隻黑色皮卡丘之後,朋友就給我了一個建議可以做一個神奇寶貝的「猜猜我是誰?」的遊戲,剛好最近學到了 if else 的判斷式語法,這不是剛剛好拿來做練習嗎?果然當你努力想學習 swift 的時候,全世界都會來幫你!

在開始動手建立小遊戲之前,因為這個介面需要一些互動式的功能,不是簡單地呈現東西而已,所以第一步我先把想要的畫面,大概手繪了一下像下面這樣,看著看著,果然是沒有美術天份啊,哈哈哈XD

沒有美術天分沒關係,自己看得懂就好,有了初步的介面之後,就開始把工作轉移到 Xcode 的 storyboard 了,先把需要的 UI 介面呈現出來像下面這樣,記得要把需要的圖片放到 Assests 裡面,

完成了初步的介面設計之後就是開始撰寫程式碼了,首先要建立需要的 UI 元件互動、定義圖片庫、變數等等,

//    將需要的變數先定義出來,若有需要與UI介面互動的就利用 @IBOutlet 進行定義@IBOutlet weak var pokemonImage: UIImageView!@IBOutlet weak var randomButton: UIButton!@IBOutlet weak var answerText: UITextField!@IBOutlet weak var enterButton: UIButton!@IBOutlet weak var answerImage: UIImageView!@IBOutlet weak var showLabel: UILabel!
// 定義兩個 DIctionary ,內建是以 [Int : String]的型式儲存,分別儲存剪影圖片和正常圖片let shadowDict : Dictionary = [1:"卡比獸剪影",2:"卡咪龜剪影",3:"吉利蛋剪影",4:"多邊獸剪影",5:"耿鬼剪影",6:"喵喵剪影",7:"嘎啦嘎啦剪影",8:"卡咪龜剪影",9:"墨海馬剪影",10:"鯉魚王剪影"]let pokemonDict : Dictionary = [1:"卡比獸",2:"卡咪龜",3:"吉利蛋",4:"多邊獸",5:"耿鬼",6:"喵喵",7:"嘎啦嘎啦",8:"卡咪龜",9:"墨海馬",10:"鯉魚王",]// 這邊重要!!卡關卡超級久!!定義一個變數為 Int ,為的是要讓後面的 func 可以利用,將產生的值替換再讓下一個 func 使用var pokemonIndex = 0

完成程式的初步設定之後,接下來就是進行功能動作的建立,

@IBAction func randomButton(_ sender: UIButton) {//        先產生一個亂數作為查找用的索引let randomindex = Int.random(in: 1...shadowDict.count)//        取得剪影庫裡面的值,將猜猜我是誰的圖片替換為剪影圖片let shadowName = (shadowDict[randomindex])?.descriptionpokemonImage.image = UIImage(named:shadowName!)//        這邊超級重要!!為了讓後面的 func 也能利用隨機產生的查找用索引,所以將隨幾所引存到一開始定義的變數 pokemonIndex 裡面pokemonIndex = randomindex}//    編輯按下 ENTER 鍵的動作@IBAction func enterButton(_ sender: UIButton) {//        先讀取輸入的答案文字let answer = answerText.text//        利用剛剛存儲的 pokemonIndex 座位索引查找神奇寶貝圖庫裡面的圖片let pokemonName = (pokemonDict[pokemonIndex])!.descriptionlet shadowName = (shadowDict[pokemonIndex])!.description//        這一行是測試用,測試事不是真的查找到神奇寶貝圖庫中正確的神奇寶貝名稱showLabel.text = String(pokemonDict[pokemonIndex]!)//       條件判斷式,若輸入的答案等於神奇寶貝圖庫裡面的圖片名稱,則顯示正確的圖片,並且將剪影神奇寶貝替換為正確的神奇寶貝,若是不等於則顯示錯誤的圖片,圖片維持或變回剪影圖片if answer == pokemonName {answerImage.image = UIImage(named: "pokeO")pokemonImage.image = UIImage(named: pokemonName)}else if answer != pokemonName {answerImage.image = UIImage(named: "pokeX")pokemonImage.image = UIImage(named: shadowName)}}

上面貼附的程式碼有一些說明,主要是在註記每一個步驟的意義,以及在編寫時我卡關的地方和解決方法,方法不一定是最好的,但是是目前我會的解法,有興趣的話可以參考一下。

這邊說明一下畫面的互動,首先是點選寶貝球,遊戲會出題跳出要我們猜的剪影圖,在輸入答案之後點選送出,假如答對,果然翁就會跳出來幫你鼓勵鼓勵,同時神奇寶貝剪影會顯示正彩色的樣子,假如答錯,果然翁就會幫你打叉,剪影也不會變動,可以重猜一次,那就讓我們一起看看成果吧!

那這次的分享就到這邊,下次見囉!

--

--