創作一翻兩瞪眼的 iOS App 翻牌比大小遊戲
Published in
Dec 5, 2020
結合了基本的 Swift 語法和 iOS SDK,創作出這款簡單有趣的「一翻兩瞪眼」翻牌比大小 iOS App 遊戲。雖說遊戲簡單通俗,卻也算得上是老少咸宜、萬年不敗的經典遊戲啊~
作品展示
依喜好選擇牌卡顏色後即可進入主遊戲頁面,玩家可以隨機 4 選 1 的抽牌方式,與電腦選定的牌卡進行比大小的緊張對決,贏的一方獲得 1 分,系統將自動累積雙方目前分數,直到遊戲倒數時間結束,便完成了一局驚心刺激的完美比賽。
賽後可點選戰績表觀看剛剛刀光血影、戰況激烈的比賽戰績,不管是人品好的玩家獲勝記錄,還是衰神上身的吞敗記錄,都條列歷歷無法抵賴。
很想知道遊戲背後推手的作者資訊?有的!首頁貼心的附上作者的 Medium 連結,想給作者拍拍手鼓勵鼓勵的千萬不用客氣啊~(心虛…😅😅)
實作重點
- 使用多個頁面展現不同的特定功能,首頁 SettingViewController 提供牌卡的顏色選擇,主遊戲頁 GameViewController 即是遊戲的主要體驗區,而最後的戰績表則是另開 ScoreViewController 成績頁面進行呈現。
- 自訂一個 struct Card 定義牌卡的名稱、花色、數字及圖片名稱,另搭配 enum Suit 定義花色的名稱及權重比例,最後再以 Array 將所有牌卡及其屬性以 Card 型別全數裝入其中以供後續使用。
- 利用 shuffled 功能實現重新洗牌的效果,值得注意的是須在牌卡取出後將此卡移出 Array,才不致產生相同牌卡重複抽出的弊端,另在 52 張牌全數取盡後須再重新進行取牌洗牌的步驟,以避免玩到無牌可用的窘境。
- 運用 Timer 實現遊戲時間倒數功能,同時也實作計時停止功能,避免讓計時器傻傻的一直數下去。此處還另以 format 讓畫面呈現理想的時間倒數樣式而非奇怪的數字倒數。
- 利用 UIViewPropertyAnimator 製作牌卡自動飛到專屬牌框的動畫效果,其中 x、y 座標值是經由原始物件和目標物件的相對位置計算而來。
- 運用 IBSegueAction 進行頁面資料的傳遞,首先利用了 segueIdentifier 將牌卡顏色名稱傳入 GameViewController 主遊戲頁供牌卡設定顏色用,最後則是使用了 Array 包裏戰績資料傳入 ScoreViewController 成績頁供戰績列表用。
- 使用 UIAlertController 實作遊戲提示視窗,首先使用 .alert 模式提示每回比賽的勝敗結果,並詢問是否繼續玩以便判斷是否重新發牌,最後則是使用 .actionSheet 模式提示時間倒數結束,比賽終了。
- 透過 present 顯示 SFSafariViewController,藉此方式插入工商服務的作者資訊 Medium 網頁。
- 利用 Array 儲存賽局的勝敗記錄,並以 IBSegueAction 將資料傳至 ScoreViewController,最後再以 for 迴圈方式將所有勝敗記錄逐條顯示於成績頁面上。