Swift 程式設計 #1 擲骰子

程式功能

最多四人輪流擲骰子決定輸贏

程式畫面

使用元件及程式功能

1 使用 IBOutlet 和 IBAction 實現 App 的功能。

2 畫面上至少需包含以下元件,而且程式也有使用這些元件。

text field,slider,switch,label,image view,button,segmented control,date picker

3 slider 滑動時要搭配 label 顯示數值

4 使用者輸入文字後,可以將鍵盤收起來,比方按某個 button 或 return 鍵。

5 有亂數功能。

遊戲規則

計點方式是先扣除2顆點數相同的骰子,其餘2顆點數合計即為其所得點數。

若有兩組骰子點數相同,則取最大點的一組相加,若有3顆骰子相同且另一顆不同,必須重擲。

因此,所得點數最大為12點,稱為「十八」(si̍p-pat);最小為3點,發音類似BiGi,為賭徒賭輸,生氣怒罵用語。

若四顆骰子正面均相同,稱為「一色」(外省人稱豹子),不論點數多寡,均以勝計。

若所擲骰子正面均不相同,稱為「無面」或「無點」,應重新擲至有點數為止。

程式操作錄影

https://streamable.com/uyfqdu

GitHub 連結

https://github.com/jemiway0816/sibala

資料結構

    // 每個玩家骰子點數與訊息的結構
struct DiceValue
{
var diceArray:[Int] = [0,0,0,0]
var diceScore = 0
var msgValue = 0
}

// 玩家資訊的陣列
var playerDiceValue:[DiceValue] =
[
DiceValue(diceArray: [0,0,0,0], diceScore: 0, msgValue: 0),
DiceValue(diceArray: [0,0,0,0], diceScore: 0, msgValue: 0),
DiceValue(diceArray: [0,0,0,0], diceScore: 0, msgValue: 0),
DiceValue(diceArray: [0,0,0,0], diceScore: 0, msgValue: 0)
]

// 顯示訊息字典
let stringDic:[Int:String] =
[
0:"",
3:"擲出 BiGi 有夠慘",
333:"三個骰子相同,再擲一次",
6666:"擲出 豹子!! 通殺",
1234:"骰子都不同,再擲一次"
]

加入擲骰子時讓骰子轉動的動畫,使用Timer計時

timer = Timer.scheduledTimer(
timeInterval: 0.2,
target: self,
selector: #selector(countdown(timer:)),
userInfo: nil,
repeats: true)

加入擲骰子時同時發出聲音,使用非同步寫法

let globalQueue = DispatchQueue.global(qos: .default)
globalQueue.async
{
if soundOnOff == 1
{
self.mp3Player?.play()
}
}

--

--