四、鍵盤預設彈出&加入亂數
- 程式執行,鍵盤自動產出:
- ViewController.swift
- 函數-預設顯示:becomeFirstResponder
- 亂數產生0~100的數值:
- 函數-亂數:arc4random_uniform(x)+1
- 將Ulnt32轉型成int:(https://yulin0629.gitbooks.io/swift-/content/Integer.html)
- 把亂數存在變數answer裡
程式碼:
var answer = Int(arc4random_uniform(100) + 1)
加入按下Guess的鍵,會印出答案的程式碼,並按下執行鍵▶看效果
print("answer = \(answer)")
五、取得使用者輸入的數字inpoutTextField.text!
- 取得文字輸入框的文字inpoutTextField.text!
程式碼:
print("answer = \(answer)") let inputText = inputTextField.text! //取得文字輸入框的文字 print("inputText = \(inputText)")
加上!驚嘆號是表示,文字輸入框裡一定有文字
- print 亂數出來的結果
- print 使用者輸入的字串
2.程式執行效果(先輸入猜的數字,再按Guess button)
3.轉換型別:把輸入框裡的String字串,轉成Int整數
- 輸入的文字inputText,是字串(String),無法與answer是整數Int相比
- 所以要進行轉換:
let inputNumber = Int(inputText)
print("inputNumber = \(inputNumber)")
4.程式執行效果
六、判斷是否有值及輸入的值是否太大或太小。
if inputNumber == nil{
//若沒有輸入值
print("no input")
}else{
//若有輸入值
if inputNumber! > 100{
print("too large")
}else if inputNumber! < 1{
print("too small")
}else{
//確認答案
print("check answer")
}
}
- 加上!驚嘆號是表示,文字輸入框裡一定有文字
- Nil:沒有值。
程式執行效果:
七、清除文字輸入框的字
@IBAction func makeAGuess(_ sender: UIButton) {
print("answer = \(answer)")
let inputText = inpoutTextField.text!
//清除字串
inpoutTextField.text = ""
八、限制可輸入的最大及最小值並用變數取代之
- 先義二個變數maxNumber及minNumber
@IBOutlet weak var inputTextField: UITextField!
var maxNumber = 100
var minNumber = 1
//make a random number
var answer = Int(arc4random_uniform(100) + 1)
- 將原本的1及100用變數minNumber及maxNumber取代
@IBAction func makeAGuess(_ sender: UIButton) {
print("answer = \(answer)")
let inputText = inputTextField.text!
//取得輸入框文字
print("input = \(inputText)")
let inputNumber = Int(inputText)
print("inputNumber = \(inputNumber)")
if inputNumber == nil{
//若沒有輸入值
print("no input")
}else{
//若有輸入值
if inputNumber! > maxNumber{
print("too large")
}else if inputNumber! < minNumber{
print("too small")
}else{
//確認答案
print("check answer")
}
}
九、將提示文字由「print」,轉成「messagelabel.text」
@IBAction func makeAGuess(_ sender: UIButton) {
print("answer = \(answer)")
let inputText = inputTextField.text!
//取得輸入框文字
print("input = \(inputText)")
let inputNumber = Int(inputText)
print("inputNumber = \(inputNumber)")
if inputNumber == nil{
//若沒有輸入值
messagelabel.text = "no input"
}else{
//若有輸入值
if inputNumber! > maxNumber{
messagelabel.text = "too large"
}else if inputNumber! < minNumber{
messagelabel.text = "too small"
}else{
//確認答案
messagelabel.text = "check answer"
}
}
}
效果:
十、確認答案有二種情況:確認是對的答案及確認是錯的答案
所以將以下原始碼
//確認答案
messagelabel.text = "check answer"
置換成
if inputNumber == answer{
//答對了
messagelabel.text = "You're right"
}else{
//答錯了
messagelabel.text = "you are wrong, try again"
}
十一、錯的答案有二種可能:比正確答案大,比正確答案小
所以將以下原始碼
//答錯了
messagelabel.text = "you are wrong, try again"
置換成:
//答錯了的二種情況
if inputNumber! > answer{
//當猜的數字 大於 答案
maxNumber = inputNumber!
}else{
//當猜的數字 小於答案
minNumber = inputNumber!
}
messagelabel.text = "try again! Guess a number between \(minNumber)~\(maxNumber)"
效果: