#8 終極密碼

Wen
彼得潘的 Swift iOS / Flutter App 開發教室
5 min readDec 2, 2023

終極密碼是很多人都會玩的遊戲,這次做個小改動,可以自己加入範圍

先拉好textflied和button、label、圖片和背景圖片

輸入範圍的button

這邊??的意思是:將textflied裡面string為nil時,變成空字串,外面再將字串換為int

Swift 特別發明了即使 nil 也能變出預設值的雙重問號。在雙重問號的左邊接 optional 變數(常數),右邊接預設值,當 optional 不為 nil 時,即解開它的包裝取值。而當 optional 為 nil 時,則回傳預設值。

  @IBAction func enterrange(_ sender: UIButton) {
minNum = Int(range1.text ?? "") ?? 0
maxNum = Int(range2.text ?? "") ?? 0
randomNumber = Int.random(in: minNum!...maxNum!) }

確認的button

 @IBAction func enter(_ sender: UIButton) {
let guessNum = Int(number.text ?? "") ?? 0
if randomNumber == nil {
answer.text = "請確定數字範圍並按下確定按鈕!!!"
return
}
if guessNum < randomNumber! {
minNum = guessNum
answer.text = ("太小了,再試一次!範圍:\(minNum!)~\(maxNum!)")
number.text = ""
} else if guessNum > randomNumber! {
maxNum = guessNum
answer.text = ("太大了,再試一次!\n範圍:\(minNum!)~\(maxNum!)")
number.text = ""

} else {answer.text = ("恭喜你猜中了!")
}
view.endEditing(true)
}

重玩的button

 @IBAction func restgame(_ sender: UIButton) {
randomNumber = Int.random(in: minNum!...maxNum!)
number.text = ""
answer.text = ""
range1.text = ""
range2.text = ""
}

完整程式碼

import UIKit

class ViewController: UIViewController {



@IBOutlet weak var number: UITextField!

@IBOutlet weak var answer: UILabel!

@IBOutlet weak var range1: UITextField!

@IBOutlet weak var range2: UITextField!


var randomNumber :Int?
var minNum: Int?
var maxNum: Int?

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

}

@IBAction func enterrange(_ sender: UIButton) {
minNum = Int(range1.text ?? "") ?? 0
maxNum = Int(range2.text ?? "") ?? 0
randomNumber = Int.random(in: minNum!...maxNum!) }

@IBAction func enter(_ sender: UIButton) {
let guessNum = Int(number.text ?? "") ?? 0
if randomNumber == nil {
answer.text = "請確定數字範圍並按下確定按鈕!!!"
return
}
if guessNum < randomNumber! {
minNum = guessNum
answer.text = ("太小了,再試一次!範圍:\(minNum!)~\(maxNum!)")
number.text = ""
} else if guessNum > randomNumber! {
maxNum = guessNum
answer.text = ("太大了,再試一次!\n範圍:\(minNum!)~\(maxNum!)")
number.text = ""

} else {answer.text = ("恭喜你猜中了!")
}
view.endEditing(true)
}



@IBAction func restgame(_ sender: UIButton) {
randomNumber = Int.random(in: minNum!...maxNum!)
number.text = ""
answer.text = ""
range1.text = ""
range2.text = ""
}

}

--

--