#12–2 猜數字

Property

//數字的輸入框
@IBOutlet
weak var numberTextField: UITextField!
//範圍中的最小數字
@IBOutlet
weak var minNumberLabel: UILabel!
//範圍中的最大數字
@IBOutlet
weak var maxNumberLabel: UILabel!
//輸入數字後的結果文字顯示
@IBOutlet
weak var resultLabel: UILabel!
//剩餘的次數
@IBOutlet
weak var chanceLabel: UILabel!
//亂數的答案
var
answer = Int.random(in: 1…100)
//可以猜6次
var
chanceCount = 6

Method 1 -按下送出按鈕後的動作

  1. 確認 TextField 有數字按下送出按鈕才能開始動作
  2. 確認輸入的數字是否正確,如果不正確提供範圍和告知結果
  3. 總共有 6 次的猜測機會,每按下按鈕一次就減少一次猜測機會
  4. 送出數字後就清空 TextField 並收起鍵盤
  5. 用掉最後一次猜測機會沒有猜中就提供正確答案
@IBAction func guess(_ sender: Any) {let numberText = numberTextField.text!let number = Int(numberText)//限制按下送出按鈕時 numberTextField 必須不是空的才能有動作
if
number != nil {
let guessNumber = number!if guessNumber == answer {resultLabel.text = “答對了”} else if guessNumber < answer {resultLabel.text = “數字有點小囉”//把數字填進minNumberLabel裡,成為範圍中最小的數字
minNumberLabel.text = “\(guessNumber)”
//剩餘次數減1
chanceCount = chanceCount — 1
//剩餘次數算出來的值填入Label
chanceLabel.text = “\(chanceCount)”
} else {resultLabel.text = “數字有點大了”//把數字填進maxNumberLabel裡,成為範圍中最大的數字
maxNumberLabel.text = “\(guessNumber)”
chanceCount = chanceCount — 1chanceLabel.text = “\(chanceCount)”}//當剩餘次數0時,提供答案
if
chanceCount == 0{
resultLabel.text = “結束了!!答案是 \(answer)”} else if chanceCount < 0 {resultLabel.text = “嘖!不是已經告訴你答案了嗎😤”}}//清空TextField
numberTextField.text = “”
//把鍵盤收起來
view.endEditing(true)
}

Method 2 -按下再一次按鈕後的動作

按下再一次按鈕後須產生一個新的答案,並將程式恢復到原本的樣子

@IBAction func replay(_ sender: Any) {//重新亂數產生一個答案
answer = Int.random(in: 0…100)
//剩餘次數回復到6次
chanceCount = 6
chanceLabel.text = “\(chanceCount)”//範圍的最小值回到 1
minNumberLabel.text = “1”
//範圍的最大值回到 100
maxNumberLabel.text = “100”
//清空告知結果的Label
resultLabel.text = “”
}

GitHub

https://github.com/LetaLei/GuessNumber

--

--