#46 給開司來罐啤酒!比大小骰子遊戲

功能

  • 基本下注 1000 ,steppper 加注從 5000 起跳,每次加 5000 。
  • 按「 All In 」 button可把玩家本金全部下注。
  • 比三顆骰子的總和,調整 segmented control 可跟莊家比大或是比小。
  • 按下「 ROLL 」 button 隨機產生雙方六顆骰子的點數。
  • 晃動手機亦可開始遊戲。
  • 用 label 顯示骰子總和、本金和下注金額。
  • 玩家本金 0 元時,用 image view 顯示破產 。
  • 按 「 REPLAY 」buttm 可重玩,重新下注,本金變回 100000 。

程式碼

  • stepper 的 value ,每加一增加五千,顯示在下注金額的 label 。
var bet = 1000@IBAction func increaseBet(_ sender: Any) {
bet = Int(5000 * (moneyStepper.value))
moneyLabel.text = "\(bet)"
}
  • 「 All In 」 button ,本金 playerMoney 指派給 bet 下注金額,顯示在下注金額的 label 。
var playerMoney = 100000@IBAction func allIn(_ sender: Any) {
bet = playerMoney
moneyLabel.text = "\(bet)"
}
  • 「 ROLL 」 button 裡隨機產生雙方六顆骰子的點數,又因照片指引數是從 0 開始,因此產生 0 到 5 的隨機數字,總和須加 3 才是骰子數字,顯示兩邊總合於邊的 label 。
  • 以 segmented control 判斷跟莊家比大或是比小,並以此顯示結果及更改本金金額。
  • 若本金等於 0 時,顯示 image view
let imageNames = ["one","two","three","four","five","six"]@IBAction func changeDie(_ sender: Any) {let leftOneRadom = Int.random(in: 0...5)
let leftTwoRadom = Int.random(in: 0...5)
let leftThreeRadom = Int.random(in: 0...5)
let rightOneRadom = Int.random(in: 0...5)
let rightTwoRadom = Int.random(in: 0...5)
let rightThreeRadom = Int.random(in: 0...5)
leftOneImageView.image = UIImage(named: imageNames[leftOneRadom])
leftTwoImageView.image = UIImage(named: imageNames[leftTwoRadom])
leftThreeImageView.image = UIImage(named: imageNames[leftThreeRadom])
leftTotalLabel.text = "\(leftOneRadom + leftTwoRadom + leftThreeRadom + 3)"rightOneImageView.image = UIImage(named: imageNames[rightOneRadom])
rightTwoImageView.image = UIImage(named: imageNames[rightTwoRadom])
rightThreeImageView.image = UIImage(named: imageNames[rightThreeRadom])
rightTotalLabel.text = "\(rightOneRadom + rightTwoRadom + rightThreeRadom + 3)"let leftNumber = Int(leftTotalLabel.text!)
let rightNumber = Int(rightTotalLabel.text!)
if segmentedControl.selectedSegmentIndex == 0 {if leftNumber! > rightNumber! {
playerMoneyLabel.text = "\(playerMoney - bet)"
winOrLoseLabel.text = "比大~ 你輸了! 賠\(bet) 元"
} else if leftNumber! < rightNumber! {
playerMoneyLabel.text = "\(playerMoney + bet)"
winOrLoseLabel.text = "比大~ 你贏了! 賺\(bet) 元"
} else if leftNumber! == rightNumber! {
playerMoneyLabel.text = "\(playerMoney)"
winOrLoseLabel.text = "和莊家點數一樣!平手!"
}
} else if segmentedControl.selectedSegmentIndex == 1 {if leftNumber! > rightNumber! {
playerMoneyLabel.text = "\(playerMoney + bet)"
winOrLoseLabel.text = "比小~ 你贏了! 賺\(bet) 元"} else if leftNumber! < rightNumber! {
playerMoneyLabel.text = "\(playerMoney - bet)"
winOrLoseLabel.text = "比小~ 你輸了! 賠\(bet) 元"
} else if leftNumber! == rightNumber! {
playerMoneyLabel.text = "\(playerMoney)"
winOrLoseLabel.text = "和莊家點數一樣!平手!"
}
}
playerMoney = Int(playerMoneyLabel.text!)!if playerMoney == 0 {
bankruptImageView.isHidden = false
}
}
  • 晃動手機亦可開始遊戲。
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?)
{
//放入手機搖晃後執行的程式碼,所以會跟button Action的內容一樣。
}
  • 「 REPLAY 」buttm
@IBAction func reset(_ sender: Any) {
playerMoney = 100000
playerMoneyLabel.text = "\(playerMoney)"
bet = 1000
moneyLabel.text = "\(bet)"
leftTotalLabel.text = ""
rightTotalLabel.text = ""
winOrLoseLabel.text = ""
segmentedControl.selectedSegmentIndex = 0
bankruptImageView.isHidden = true
}

成果

  • 一次一萬,比大和比小
  • replay 、 all in 和破產

--

--