#18 猜數字/1A2B遊戲APP

把猜數字及1A2B寫在同一個APP中,可以選擇要玩哪個遊戲。

猜數字很單純就是猜1~99的數字,因為比較簡單只有六次可以猜,畫面的星星沒了就會Game over。
1A2B則是猜四位數字,四個數字不重複,如果猜的數字位置正確的話為A,如果位置不正確但包含在四位數中則是B。猜四位數比較難,所以設計成可以猜12次,星星一樣一開始會有六顆,但是一次只會減少半顆,同樣星星沒了就Game over。

Demo動畫

APP架構

APP架構很簡單,可以從主頁面選擇要玩猜數字或1A2B (Bulls and cows)。

數字鍵盤設計

猜數字使用的是內建的number鍵盤,1A2B則為了要限制使用者可以輸入的數字(選擇過的數字不能再選),所以自己設計了包含數字Button的鍵盤。下面會分別介紹兩個鍵盤的設計。

猜數字遊戲使用內建Number Pad鍵盤

將textField的Keyboard Type選擇成Number Pad就會自動產生這個鍵盤樣式了。

限制輸入位數
這邊有設計防呆功能,最多只能輸入二位數,若使用者輸入超過二位數的話則不會有反應,實際操作如下方動畫。

這邊使用了UITextFieldDelegate的shouldChangeCharactersIn方法。

並且在viewDidLoad()加上下列程式碼讓textField遵從delegate。

inputTextField.delegate = self

點選畫面任一處關閉小鍵盤

這邊設計為點選畫面任一處都可以關閉小鍵盤,不一定要按Go Button。(另外鍵盤也可能因為機型不同擋住Go Button導致按不到哈)

首先在ViewController新增下面方法:

@objc func didTapView() {
self.view.endEditing(true)
}

並在viewDidLoad()新增tapRecognizer到view中,完成。

1A2B使用自己設計的數字鍵盤

數字鍵盤有0~9數字鍵、刪除鍵(←)及確認鍵(OK),其中數字鍵在按下後會變暗,無法選擇重複的數字,確認鍵在game over之後會變成重新開始的按鈕,並且讓數字鍵及刪除鍵都失效無法點選。

客製化數字鍵盤

每個數字鍵都有設定相對應的tag號碼來辨識使用者是按了哪個數字。

程式碼

包含邏輯判斷的完整程式碼,註解都有寫在程式碼裡所以就不逐行說明了。

猜數字

1A2B

--

--