版本:
swift 4,ios 11.2,smulater: iPhone 7
// ViewController.swift
// NumberLock
//
// Created by lin on 2018/3/19.
// Copyright © 2018年 lin. All rights reserved.
//
import UIKit
import GameKit
class ViewController: UIViewController {
var answer = GKRandomSource.sharedRandom().nextInt(upperBound: 100) + 1 //make a random number 1-100
var maxNumber = 100
var minNumber = 1
var isOver = false
//change the UI color
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
@IBOutlet weak var messageLable: UILabel!
@IBOutlet weak var inputTextfiled: UITextField!
@IBOutlet weak var background: UIImageView!
@IBAction func makeAGuess(_ sender: UIButton) {
if isOver == false{
//playing game
print(answer)
//take input text out
let inputText = inputTextfiled.text!
//clear textfield
inputTextfiled.text = ""
let inputNumber = Int(inputText)
if inputNumber == nil{
//wrong input
messageLable.text = "No input! Guess a number between \(minNumber) ~ \(maxNumber)"
}else{
//input ok
if inputNumber! > maxNumber{
//user input too large
messageLable.text = "Too large! Guess a number between \(minNumber) ~ \(maxNumber)"
}else if inputNumber! < minNumber{
//user input too small
messageLable.text = "Too small! Guess a number between \(minNumber) ~ \(maxNumber)"
}else if inputNumber! == answer{
//Bingo! right answer
messageLable.text = "You are right! Press to play again!"
isOver = true
background.image = UIImage(named: "Finish")
}else{
//check answer
if inputNumber! > answer{
//lager than answer
maxNumber = inputNumber!
}else{
//smaller than answer
minNumber = inputNumber!
}
messageLable.text = "Try again! Guess a number between \(minNumber) ~ \(maxNumber)"
}
}
}else{
//game is over
maxNumber = 100
minNumber = 1
messageLable.text = "Guess a number between \(minNumber) ~ \(maxNumber)"
answer = GKRandomSource.sharedRandom().nextInt(upperBound: 100) + 1 //make a random number 1-100
isOver = false
background.image = UIImage(named: "BG")
}
}
override func viewDidLoad() {
super.viewDidLoad()
//push the keyboard up
inputTextfiled.becomeFirstResponder()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
开始画面:
输入数字并按下Guess,会提示下一次猜测的范围:
如果输入的数字过大或过小:
猜对以后,解锁成功:
按下Guess后会开始下一次解锁: