@startuml

skinparam defaultFontName "Noto Sans Mono CJK TC Regular"

enum 勝負結果 {
    平手
    猜贏
    猜輸
}

enum 招式列舉 {
    石頭
    剪刀
    布
}

class 玩家 {
	- 名稱
	- 猜輸次數
	- 猜贏次數
	- 策略
	- 對戰回合數
    + 玩家()
    + 下一招()
    + 平手()
    + 猜輸()
    + 猜贏()
}

interface 策略介面 {
    +招式 取得下一次的招式()
    +學習(boolean 前一次的輸贏)
}

class 猜贏繼續出同一招的策略 {
	-上一次出的招式
	-上一次出拳的結果
    +招式 取得下一次的招式()
    +學習(boolean 前一次的輸贏)
}

class 機率分配策略 {
	-目前招式值
	-前一次招式值
	-歷史紀錄
    +招式 取得下一次的招式()
    +學習(boolean 前一次的輸贏)
}

class 招式 {
    +招式 取得招式()
    +比較弱()
    +比較強()
    -判斷勝負()
}
class 猜拳遊戲 {
	-玩家 波賽頓
	-玩家 蛤蛤蛤
	+開始對戰()
	+猜拳遊戲()
	-初始化()
}

玩家 o-right-> 策略介面
策略介面 <|.. 猜贏繼續出同一招的策略
策略介面 <|.. 機率分配策略
猜拳遊戲 *-- 玩家
@enduml