#42 猜數字小遊戲

開始畫面

猜數字邏輯

  • 用兩個變數來存取猜過的最大、最小值,最小值一開始為 0 ,最大值一開始為 100 ,若猜的數字小於答案,此時把猜的數字指派給最小值,再給 Label 顯示,若猜的數字大於答案,此時把猜的數字指派給最大值,用 Label 顯示。即可顯示要使用者猜測的範圍。
  • 輸入超過範圍的數字
  • 輸入非數字的情況,不能猜
  • 猜錯六次,顯示文字
@IBAction func guess(_ sender: Any) {
let numberText = numberTextField.text!
let number = Int(numberText)
if number != nil, number! <= maxNumber, number! >= miniNumber {
let guessNumber = number!
if guessNumber == answer {
resultLabel.text = "就是 \(guessNumber) ,你猜對了"
} else if guessNumber < answer {
miniNumber = guessNumber
resultLabel.text = "\(miniNumber) ~ \(maxNumber) 之間"
numberTextField.text = ""
guessWrongCount += 1
} else if guessNumber > answer {
maxNumber = guessNumber
resultLabel.text = "\(miniNumber) ~ \(maxNumber) 之間"
numberTextField.text = ""
guessWrongCount += 1
}
guessWrongCountLabel.text = "剩下 \(6 - guessWrongCount) 次機會!"
}
//輸入超過範圍的數字
if number != nil , number! > maxNumber {
resultLabel.text = "\(miniNumber) ~ \(maxNumber) 之間的數字喔~~~"
guessWrongCountLabel.text = "不給你猜~~"
}
// 輸入非數字的狀況
if number == nil {
resultLabel.text = "請輸入 \(miniNumber) ~ \(maxNumber) 之間的數字!!!!!"
guessWrongCountLabel.text = "不給你猜~~"
}
// 猜錯六次,清空原本猜的數字,顯示文字
if guessWrongCount == 6 {
numberTextField.text = ""
gameOverLabel.isHidden = false
}
// 輸入完收起鍵盤
numberTextField.endEditing(true)
}

replay 按鈕

  • 把 answer 變數隨機再跑一次,猜測次數歸零。
@IBAction func replay(_ sender: Any) {
answer = Int.random(in: 1...100)
numberTextField.text = ""
miniNumber = 0
maxNumber = 100
resultLabel.text = "請輸入 \(miniNumber) ~ \(maxNumber) 之間的數字!!!!!"
guessWrongCount = 0
guessWrongCountLabel.text = "有\(6 - guessWrongCount)次機會!"
gameOverLabel.isHidden = true
}
}

--

--