# Kotlin 2024 期末作業
[TOC]
請使用 Kotlin 寫出一個類似 [Texas hold 'em](https://en.wikipedia.org/wiki/Texas_hold_%27em) 的遊戲。
## 簡化版規則
+ 使用 7 附牌進行遊戲。
+ 牌力大小:
1. Royal Flush
1. Five of a Kind
1. Straight Flush
1. Four of a Kind
1. Full House
1. Flush
1. Straight
1. Three of a Kind
1. Two Pairs
1. One Pair
1. High Card
+ 2 張底牌皆必須使用。
+ 玩家:1 個人類玩家,3 個電腦(電腦1、電腦2、電腦3)
+ 電腦下注規則:
1. 電腦1:
1. 不到 One Pair 就棄牌。
2. 沒人 All in 時 One Pair 壓 1 塊。
3. 有人 All in 時 One Pair 就棄牌。
4. 超過 One Pair 就 All in。
2. 電腦2:
1. 不到 Two Pairs 就棄牌。
2. 沒人 All in 時 Two Pairs 壓 1 塊。
3. 有人 All in 時 Two Pairs 就棄牌。
4. 超過 Two Pairs 就 All in。
3. 電腦3:
1. 不到 Three of a Kind 就棄牌。
2. 沒人 All in 時 Three of a Kind 壓 1 塊。
3. 有人 All in 時 Three of a Kind 就棄牌。
4. 超過 Three of a Kind 就 All in。
+ 順序為
1. 電腦1
2. 電腦2
3. 電腦3
4. 人類玩家
+ 每回合流程:
1. 將牌隨機打亂。
2. 發給每位玩家 2 張底牌。
3. 發 5 張公共牌。
4. 詢問玩家是否 All in。
5. 若玩家 All in,按照順序決定是否 All in 或棄牌。
6. 若玩家不 All in,按照順序決定是否壓 1 元或棄牌。
7. 結算分數,並顯示每位玩家的牌力大小。
+ 每個玩家一開始擁有 100 元。
+ 贏的玩家獲得所有的錢,若有多位玩家平手則平分(向下取整)
+ 有玩家超過 250 元或沒錢時遊戲結束。
## 要求
+ 在程式執行時,前三個回合需要隨機產生每次都不一樣的牌順序。第四回合,隨機產生某一個電腦會因為 all in 而輸光的盤面,並解釋程式碼隨機產生牌組跟輸家的過程。
+ 牌的長相
1. 文字版花色使用 unicode `♠♥♦♣`
2. 文字版數字使用 2~10 以及 J Q K A
3. 手機版使用 WiKi 上的 [撲克牌 SVG 圖片](https://en.wikipedia.org/wiki/Standard_52-card_deck#SVG)。
+ 遊戲結束時,產生玩家排名。
## 文字版輸入輸出
請自行規劃。
## 手機版排版參考畫面
請自行規劃,或採用老師之後課程示範之 Sample code 。
## 提交
> Windows可以使用[Bandicam](https://www.bandicam.com/tw/)來錄影,也可以使用支援Windows、MAC的OBS但比較複雜一些;無論如何千萬不要使用手機對螢幕錄影,拜託!
* 拍攝YouTube解說你的程式碼並玩至遊戲結束,請確定畫質可以看清楚,以及有清楚錄製你的聲音
* 將主程式打包好提交到e3
### 打包方法
