練習筆記49:骰子比大小+抽籤小幫手

這次的作業是用亂數做骰子比大小

在做的過程中想說順便做一個抽籤功能的頁面

有選擇障礙的時候就可以派上用場~

骰子比大小主要利用outlet collection分別儲存左右兩邊的骰子

並將兩個搖一搖button設定tag後拉到同一個IBAction,

在IBAction中再利用switch 去判斷讀取到的sender.tag是哪個button

進而改變對應方的骰子點數

最後用if else判斷當兩邊都有分數時比較兩邊的分數 並顯示獲勝玩家

以及設定平手時跳出的訊息

//丟骰子
@IBAction func rollButton(_ sender: UIButton) {
aWinButton.isHidden = true
bWinButton.isHidden = true

switch sender.tag{
//L Side
case 1:
lSideSum = 0

for i in 0..<lSideDices.count{
let randomNumber = Int.random(in: 1...6)
lSideDices[i].image = UIImage(systemName: "die.face.\(randomNumber)")
lSideSum += randomNumber
}
lSideScoreLabel.text = "\(lSideSum)"

//R Side
case 2:
rSideSum = 0
for i in 0..<rSideDices.count{
let randomNumber = Int.random(in: 1...6)
rSideDices[i].image = UIImage(systemName: "die.face.\(randomNumber)")
rSideSum += randomNumber
}
rSideScoreLabel.text = "\(rSideSum)"
default:
break

}
//判斷誰贏的win標示
if lSideScoreLabel.text != " ",rSideScoreLabel.text != " "{
if lSideSum > rSideSum{
aWinButton.isHidden = false
}else if lSideSum < rSideSum{
bWinButton.isHidden = false
}else{
let alert = UIAlertController(title: "平手", message: "重來一次", preferredStyle: .alert)
let tryAgain = UIAlertAction(title: "OK", style: .default)
alert.addAction(tryAgain)
present(alert, animated: true)
setUI()
}}






}

抽籤小幫手的部分做了一個segmented control 可以依需求切換功能

填好選項後就可以用亂數去抽籤~

   //選功能類別
@IBAction func selectType(_ sender: UISegmentedControl) {
resultLabel.text = " "

switch sender.selectedSegmentIndex{
case 0:
view3.isHidden = true
areaView.frame = CGRect(x: 37, y: 201, width: 300, height: 230)
case 1:
view1.isHidden = false
view2.isHidden = false
view3.isHidden = false
areaView.frame = CGRect(x: 37, y: 201, width: 300, height: 340)
case 2:
view1.isHidden = false
view2.isHidden = false
view3.isHidden = false
areaView.frame = CGRect(x: 37, y: 201, width: 300, height: 340)
default:
break
}
}
//點選抽籤按鈕
@IBAction func help(_ sender: Any) {
switch selection.selectedSegmentIndex{
case 0:
let choices = [choice1.text,choice2.text]
resultLabel.text = choices[Int.random(in: 0...1)]

case 1:
let choices = [choice1.text,choice2.text,choice3.text]
resultLabel.text = choices[Int.random(in: 0...2)]

case 2:
let choices = [choice1.text,choice2.text,choice3.text]
let randomNumber1 = Int.random(in: 0...2)
var randomNumber2 = Int.random(in: 0...2)
while randomNumber2 == randomNumber1{
randomNumber2 = Int.random(in: 0...2)}
resultLabel.text = "\(choices[randomNumber1]!)&\(choices[randomNumber2]!)"

default:
break

}

這兩個功能是用tab頁面做切換

我想要讓兩個頁面在切換時都能回復初始設定

一開始想說在viewDidLoad裡都設定了為甚麼還是不行

後來問了Peter才知道是要寫viewWillAppear

    override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setUI()

}

操作畫面:

完成~~~

--

--