練習筆記49:骰子比大小+抽籤小幫手
Published in
6 min readDec 6, 2022
這次的作業是用亂數做骰子比大小
在做的過程中想說順便做一個抽籤功能的頁面
有選擇障礙的時候就可以派上用場~
骰子比大小主要利用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()
}
操作畫面:
完成~~~