interfaces

interfaces

import "github.com/yuta-yoshinaga/go_trumpcards/internal/domain/interfaces"

Index

## type BaccaratGame

BaccaratGame バカラゲームインタフェース

type BaccaratGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Bet ベットしてゲームを実行する
    Bet(amount, betType, ppBet, bpBet int) error
    // ClearHistory 罫線履歴をクリアする
    ClearHistory()

    // GetPlayerHand プレイヤーハンドを取得する
    GetPlayerHand() []*domain.Card
    // GetBankerHand バンカーハンドを取得する
    GetBankerHand() []*domain.Card
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetBetAmount ベット額を取得する
    GetBetAmount() int
    // GetBetType ベットタイプを取得する
    GetBetType() int
    // GetResult ゲーム結果を取得する
    GetResult() domain.GameResult
    // GetPayout 配当金額を取得する
    GetPayout() int
    // GetChips チップを取得する
    GetChips() int
    // GetPlayerHandValue プレイヤーハンド合計値を取得する
    GetPlayerHandValue() int
    // GetBankerHandValue バンカーハンド合計値を取得する
    GetBankerHandValue() int
    // GetHistory 罫線履歴を取得する
    GetHistory() []int
    // GetPlayerPairBet プレイヤーペアベット額を取得する
    GetPlayerPairBet() int
    // GetBankerPairBet バンカーペアベット額を取得する
    GetBankerPairBet() int
    // GetSideBetResults サイドベット結果を取得する
    GetSideBetResults() []*domain.BacSideBetResult
}

## type BaseGame

BaseGame 全ゲーム共通のインタフェース

type BaseGame interface {
    // GetActionLog 棋譜を取得する
    GetActionLog() []*domain.ActionLogEntry
}

## type BlackJackGame

BlackJackGame ブラックジャックゲームインタフェース

type BlackJackGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // PlayerBet プレイヤーがベットしてゲームを開始する
    PlayerBet(amount, ppBet, t3Bet, handCount int) error
    // PlayerInsurance プレイヤーがインシュランスを購入する
    PlayerInsurance() error
    // PlayerDeclineInsurance プレイヤーがインシュランスを辞退する
    PlayerDeclineInsurance() error
    // PlayerHit プレイヤーがヒットする
    PlayerHit() error
    // PlayerStand プレイヤーがスタンドする
    PlayerStand() error
    // PlayerDoubleDown プレイヤーがダブルダウンする
    PlayerDoubleDown() error
    // PlayerSplit プレイヤーがスプリットする
    PlayerSplit() error
    // PlayerSurrender プレイヤーがサレンダーする
    PlayerSurrender() error
    // PlayerEarlySurrender プレイヤーがアーリーサレンダーする
    PlayerEarlySurrender() error
    // PlayerDeclineEarlySurrender プレイヤーがアーリーサレンダーを辞退する
    PlayerDeclineEarlySurrender() error
    // SetDeckCount デッキ数を設定する
    SetDeckCount(count int) error
    // ToggleHint ヒント表示を切り替える
    ToggleHint()
    // SetConfig ゲーム設定を変更する
    SetConfig(config domain.BlackJackConfig) error

    // GetPlayer プレイヤーを取得する
    GetPlayer() *domain.BlackJackPlayer
    // GetDealer ディーラーを取得する
    GetDealer() *domain.BlackJackPlayer
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPlayerHands プレイヤーハンド一覧を取得する
    GetPlayerHands() []*domain.BlackJackHand
    // GetCurrentHandIdx 現在操作中のハンドインデックスを取得する
    GetCurrentHandIdx() int
    // GetInsuranceBet インシュランスベット額を取得する
    GetInsuranceBet() int
    // IsInsuranceAvailable インシュランスが可能かを返す
    IsInsuranceAvailable() bool
    // GameJudgmentForHand 指定ハンドの勝敗を判定する
    GameJudgmentForHand(handIdx int) domain.GameResult
    // GameJudgment ゲーム勝敗を判定する
    GameJudgment() domain.GameResult
    // GetDeckCount デッキ数を取得する
    GetDeckCount() int
    // IsHintEnabled ヒントが有効かを返す
    IsHintEnabled() bool
    // GetBasicStrategySuggestion ベーシックストラテジー推奨アクションを取得する
    GetBasicStrategySuggestion() domain.BJSuggestedAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.BlackJackConfig
    // GetRunningCount ランニングカウントを取得する
    GetRunningCount() int
    // GetTrueCount トゥルーカウントを取得する
    GetTrueCount() float64
    // IsCountingEnabled カウンティングが有効かを返す
    IsCountingEnabled() bool
    // GetCpuPlayers CPUプレイヤー一覧を取得する
    GetCpuPlayers() []*domain.BlackJackCpuSeat
    // GetSideBetResults サイドベット結果を取得する
    GetSideBetResults() []*domain.BJSideBetResult
    // GetPerfectPairsBet Perfect Pairsベット額を取得する
    GetPerfectPairsBet() int
    // Get21Plus3Bet 21+3ベット額を取得する
    Get21Plus3Bet() int
    // GetDeckPenetration デッキペネトレーション率を取得する
    GetDeckPenetration() int
    // GetMultiHandCount マルチハンド数を取得する
    GetMultiHandCount() int
    // CanSurrenderHand 指定ハンドのサレンダー可否を返す
    CanSurrenderHand(handIdx int) bool
    // CanSurrenderCpuHand CPUハンドのサレンダー可否を返す
    CanSurrenderCpuHand(cpuIdx, handIdx int) bool
}

## type BridgeGame

BridgeGame ブリッジゲームインタフェース

type BridgeGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerBid 人間プレイヤーがビッドする
    PlayerBid(bidType int, level int, suit int) error
    // CpuBid CPUプレイヤーがビッドする
    CpuBid()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.BridgeConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.BridgeConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.BridgePhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.BridgeTrickCard
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetTrumpSuit 切り札スートを取得する (-1 = NoTrump)
    GetTrumpSuit() int
    // GetContractLevel コントラクトレベルを取得する
    GetContractLevel() int
    // GetContractSuit コントラクトスートを取得する
    GetContractSuit() int
    // GetDoubled ダブル状態を取得する (0=なし, 1=ダブル, 2=リダブル)
    GetDoubled() int
    // GetDeclarerIdx デクレアラーインデックスを取得する
    GetDeclarerIdx() int
    // GetDummyIdx ダミーインデックスを取得する
    GetDummyIdx() int
    // GetBidHistory ビッド履歴を取得する
    GetBidHistory() []*domain.BridgeBidEntry
    // GetVulnerability バルネラビリティを取得する
    GetVulnerability(team int) bool
    // GetTeamScore チームスコアを取得する
    GetTeamScore(team int) int
    // GetGamesWon 勝利ゲーム数を取得する
    GetGamesWon(team int) int
    // GetBelowLine ライン以下スコアを取得する
    GetBelowLine(team int) int
    // GetWinnerTeam 勝利チームを取得する
    GetWinnerTeam() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.BridgePlayer
    // IsOpeningLeadDone オープニングリード完了かを取得する
    IsOpeningLeadDone() bool
    // GetDummyHand ダミーの手札を取得する
    GetDummyHand() []*domain.Card
    // GetHint ヒントを取得する
    GetHint() *domain.BridgeHint
    // GetValidPlayIndices プレイ可能なカードのインデックスリストを返す
    GetValidPlayIndices(playerIdx int) []int
}

## type CanastaGame

CanastaGame カナスタゲームインタフェース

type CanastaGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerDrawFromStock プレイヤーが山札からカードを引く
    PlayerDrawFromStock() error
    // PlayerDrawFromDiscard プレイヤーが捨て札の山を取る
    PlayerDrawFromDiscard(naturalPairIndices []int) error
    // PlayerMeld プレイヤーがメルドを出す
    PlayerMeld(meldGroups [][]int) error
    // PlayerSkipMeld メルドフェーズをスキップする
    PlayerSkipMeld() error
    // PlayerDiscard プレイヤーがカードを捨てる
    PlayerDiscard(cardIndex int) error
    // PlayerGoOut プレイヤーが上がる
    PlayerGoOut() error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.CanastaConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.CanastaConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.CanastaPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetDiscardTop 捨て札の一番上のカードを取得する
    GetDiscardTop() *domain.Card
    // GetDrawPileCount 山札の残り枚数を取得する
    GetDrawPileCount() int
    // GetDiscardPileCount 捨て札の枚数を取得する
    GetDiscardPileCount() int
    // GetIsFrozen 捨て札の山がフリーズ状態かを返す
    GetIsFrozen() bool
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.CanastaPlayer
    // GetDrewFromDiscard 捨て札から引いたかを返す
    GetDrewFromDiscard() bool
}

## type ClockSolitaireGame

ClockSolitaireGame クロックソリティアゲームインタフェース

type ClockSolitaireGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Step 1ステップ実行する
    Step() error
    // AutoPlay 自動プレイ(全ステップ実行)
    AutoPlay() error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.ClockSolitairePhase
    // GetPiles パイルを取得する
    GetPiles() [domain.ClockSolitairePileCount][]*domain.ClockSolitaireCard
    // GetFaceUpCount 各パイルの表向き枚数を取得する
    GetFaceUpCount() [domain.ClockSolitairePileCount]int
    // GetStepCount ステップ数を取得する
    GetStepCount() int
    // GetCurrentCard 現在のカードを取得する
    GetCurrentCard() *domain.Card
}

## type CrazyEightsGame

CrazyEightsGame クレイジーエイトゲームインタフェース

type CrazyEightsGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // PlayerChooseSuit プレイヤーがスートを選択する
    PlayerChooseSuit(suit int) error
    // PlayerDraw プレイヤーが山札からカードを引く
    PlayerDraw() error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // CpuChooseSuit CPUプレイヤーがスートを選択する
    CpuChooseSuit()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.CrazyEightsConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.CrazyEightsConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.CrazyEightsPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetDiscardTop 捨て札の一番上のカードを取得する
    GetDiscardTop() *domain.Card
    // GetDrawPileCount 山札の残り枚数を取得する
    GetDrawPileCount() int
    // GetChosenSuit 選択されたスートを取得する
    GetChosenSuit() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.CrazyEightsPlayer
}

## type CribbageGame

CribbageGame クリベッジゲームインタフェース

type CribbageGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerDiscard プレイヤーがクリブに2枚捨てる
    PlayerDiscard(indices []int) error
    // PlayerPeg プレイヤーがペギングでカードを出す
    PlayerPeg(cardIndex int) error
    // PlayerGo プレイヤーがGoを宣言する
    PlayerGo() error
    // ShowNext ショーフェーズの次のスコア計算を実行する
    ShowNext() error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.CribbageConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.CribbageConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.CribbagePhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.CribbagePlayer
    // GetCrib クリブを取得する
    GetCrib() []*domain.Card
    // GetStarter スターターカードを取得する
    GetStarter() *domain.Card
    // GetPegCount ペギングカウントを取得する
    GetPegCount() int
    // GetPegPlayedCards ペギングで出されたカードを取得する
    GetPegPlayedCards() []*domain.Card
    // GetShowPhaseStep ショーフェーズのステップを取得する
    GetShowPhaseStep() int
    // GetHandScoreDetails ハンドスコア詳細を取得する
    GetHandScoreDetails() [3]*domain.CribbageScoreDetail
    // GetOriginalHand ショーフェーズ用の元の手札を取得する
    GetOriginalHand(playerIdx int) []*domain.Card
    // GetPlayerPeggedCards プレイヤーがペギングで出したカードを取得する
    GetPlayerPeggedCards(playerIdx int) []*domain.Card
}

## type DaifugoGame

DaifugoGame 大富豪ゲームインタフェース

type DaifugoGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(indices []int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // HasPendingAction ペンディングアクションがあるかを返す
    HasPendingAction() bool
    // SetConfig ゲーム設定をセットする
    SetConfig(config domain.DaifugoConfig)
    // SortHumanHand 人間の手札を指定モードでソートする
    SortHumanHand(mode domain.DaifugoSortMode) error

    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.DaifugoPlayer
    // GetRevolutionActive 革命が有効かを返す
    GetRevolutionActive() bool
    // GetElevenBackActive 11バックが有効かを返す
    GetElevenBackActive() bool
    // GetSuitLocked スート縛りが有効かを返す
    GetSuitLocked() bool
    // GetLockedSuit 縛りスートを取得する
    GetLockedSuit() int
    // GetTableIsSequence 場が階段かを返す
    GetTableIsSequence() bool
    // GetExchangeActions カード交換アクション一覧を取得する
    GetExchangeActions() []*domain.DaifugoExchangeAction
    // GetTableCards 場のカード一覧を取得する
    GetTableCards() []*domain.Card
    // GetLastPlayPlayerIdx 最後にカードを出したプレイヤーインデックスを取得する
    GetLastPlayPlayerIdx() int
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.DaifugoCpuAction
    // GetCpuActions CPU行動記録一覧を取得する
    GetCpuActions() []*domain.DaifugoCpuAction
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.DaifugoConfig
    // GetPassCount パス回数を取得する
    GetPassCount() int
    // GetPendingActionType ペンディングアクションの種類を取得する
    GetPendingActionType() domain.DaifugoPendingAction
    // GetPendingActionTarget ペンディングアクション対象プレイヤーを取得する
    GetPendingActionTarget() int
    // GetReverseDirection 逆回りかを返す
    GetReverseDirection() bool
    // GetNumberLocked 数字縛りが有効かを返す
    GetNumberLocked() bool
    // GetSequenceLocked 階段縛りが有効かを返す
    GetSequenceLocked() bool
    // GetSortMode 現在のソートモードを取得する
    GetSortMode() domain.DaifugoSortMode
}

## type DoubtGame

DoubtGame ダウトゲームインタフェース

type DoubtGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndices []int, claimedValue int, humanPlayMs int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveDoubt ダウト判定を実行する
    ResolveDoubt(doubterIndices []int)
    // SkipDoubt ダウトをスキップする
    SkipDoubt()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.DoubtConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.DoubtConfig)

    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.DoubtHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.DoubtPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.DoubtPlayer
    // GetTableCardCount 場のカード枚数を取得する
    GetTableCardCount() int
    // GetTableCards 場のカード一覧を取得する
    GetTableCards() []*domain.Card
    // GetLastAction 最後のアクション情報を取得する
    GetLastAction() *domain.DoubtAction
    // GetCpuDoubters CPUダウター一覧を取得する
    GetCpuDoubters() []int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetCpuActions CPU行動記録一覧を取得する
    GetCpuActions() []*domain.DoubtCpuAction
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.DoubtCpuAction
    // GetLastDoubtResult 最後のダウト結果を取得する
    GetLastDoubtResult() *domain.DoubtDoubtResult
}

## type EuchreGame

EuchreGame ユーカーゲームインタフェース

type EuchreGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerPickUp 人間プレイヤーがピックアップ判断する
    PlayerPickUp(orderUp bool, goAlone bool) error
    // CpuPickUp CPUプレイヤーがピックアップ判断する
    CpuPickUp()
    // PlayerCallTrump 人間プレイヤーがスートを指名する
    PlayerCallTrump(suit int, goAlone bool) error
    // PlayerPassCall 人間プレイヤーがコールフェーズでパスする
    PlayerPassCall() error
    // CpuCallTrump CPUプレイヤーがコールトランプ判断する
    CpuCallTrump()
    // PlayerDiscard 人間プレイヤー(ディーラー)がカードを1枚捨てる
    PlayerDiscard(cardIndex int) error
    // CpuDiscard CPUプレイヤー(ディーラー)がカードを1枚捨てる
    CpuDiscard()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.EuchreConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.EuchreConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.EuchrePhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.EuchreTrickCard
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetTrumpSuit 切り札スートを取得する
    GetTrumpSuit() int
    // GetFaceUpCard 表向きカードを取得する
    GetFaceUpCard() *domain.Card
    // GetMakerTeam メイカーチームを取得する
    GetMakerTeam() int
    // GetGoingAlone ゴーアローン状態を取得する
    GetGoingAlone() bool
    // GetGoingAlonePlayerIdx ゴーアローンプレイヤーインデックスを取得する
    GetGoingAlonePlayerIdx() int
    // GetTeamScore チームスコアを取得する
    GetTeamScore(team int) int
    // GetWinnerTeam 勝利チームを取得する
    GetWinnerTeam() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.EuchrePlayer
    // GetKitty キティを取得する
    GetKitty() []*domain.Card
    // GetHint ヒントを取得する
    GetHint() *domain.EuchreHint
    // GetValidPlayIndices プレイ可能なカードのインデックスリストを返す
    GetValidPlayIndices(playerIdx int) []int
}

## type FreeCellGame

FreeCellGame フリーセルゲームインタフェース

type FreeCellGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // MoveTableauToTableau タブロー間でカードを移動する
    MoveTableauToTableau(fromCol, cardIndex, toCol int) error
    // MoveTableauToFoundation タブローからファンデーションにカードを移動する
    MoveTableauToFoundation(col int) error
    // MoveTableauToFreeCell タブローからフリーセルにカードを移動する
    MoveTableauToFreeCell(col, cell int) error
    // MoveFreeCellToTableau フリーセルからタブローにカードを移動する
    MoveFreeCellToTableau(cell, col int) error
    // MoveFreeCellToFoundation フリーセルからファンデーションにカードを移動する
    MoveFreeCellToFoundation(cell int) error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.FreeCellHint
    // AutoComplete 自動完了を実行する
    AutoComplete() error
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.FreeCellPhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetTableau タブローを取得する
    GetTableau() [domain.FreeCellTableauCnt][]*domain.Card
    // GetFreeCells フリーセルを取得する
    GetFreeCells() [domain.FreeCellCellCnt]*domain.Card
    // GetFoundation ファンデーションを取得する
    GetFoundation() [domain.FreeCellFoundationCnt][]*domain.Card
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type GinRummyGame

GinRummyGame ジンラミーゲームインタフェース

type GinRummyGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerDrawFromStock プレイヤーが山札からカードを引く
    PlayerDrawFromStock() error
    // PlayerDrawFromDiscard プレイヤーが捨て札からカードを引く
    PlayerDrawFromDiscard() error
    // PlayerDiscard プレイヤーがカードを捨てる
    PlayerDiscard(cardIndex int) error
    // PlayerKnock プレイヤーがノックする
    PlayerKnock(cardIndex int) error
    // PlayerLayoff プレイヤーがレイオフする
    PlayerLayoff(cardIndices []int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.GinRummyConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.GinRummyConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.GinRummyPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetDiscardTop 捨て札の一番上のカードを取得する
    GetDiscardTop() *domain.Card
    // GetDrawPileCount 山札の残り枚数を取得する
    GetDrawPileCount() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.GinRummyPlayer
    // GetKnockerIdx ノックしたプレイヤーインデックスを取得する
    GetKnockerIdx() int
    // GetKnockerMelds ノッカーのメルド一覧を取得する
    GetKnockerMelds() [][]*domain.Card
    // GetKnockerDeadwood ノッカーのデッドウッドを取得する
    GetKnockerDeadwood() []*domain.Card
    // GetIsGin ジンかを返す
    GetIsGin() bool
}

## type GoFishGame

GoFishGame Go Fishゲームインタフェース

type GoFishGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // SetConfig ゲーム設定をセットする
    SetConfig(config domain.GoFishConfig)
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // PlayerAsk 人間プレイヤーが相手にランクを要求する
    PlayerAsk(targetIdx, rank int) error
    // CpuAsk CPUプレイヤーが1回要求を実行する
    CpuAsk() error

    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.GoFishPlayer
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int
    // GetPhase ゲームフェーズを取得する
    GetPhase() domain.GoFishPhase
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.GoFishConfig
    // GetWinnerIdx 勝者プレイヤーインデックスを取得する
    GetWinnerIdx() int
    // GetTurnNumber 現在のターン番号を取得する
    GetTurnNumber() int
    // GetDeckRemaining 山札の残り枚数を取得する
    GetDeckRemaining() int

    // GetLastAskPlayerIdx 最後に要求したプレイヤーのインデックスを取得する
    GetLastAskPlayerIdx() int
    // GetLastAskTargetIdx 最後に要求された相手のインデックスを取得する
    GetLastAskTargetIdx() int
    // GetLastAskRank 最後に要求されたランクを取得する
    GetLastAskRank() int
    // GetLastAskSuccess 最後の要求が成功したかを返す
    GetLastAskSuccess() bool
    // GetLastCardsReceived 最後に受け取ったカードを取得する
    GetLastCardsReceived() []*domain.Card
    // GetLastDrawnCard 最後にGo Fishで引いたカードを取得する
    GetLastDrawnCard() *domain.Card
    // GetLastBookFormed 最後のアクションでブックが完成したかを返す
    GetLastBookFormed() bool
    // GetLastBookRank 最後に完成したブックのランクを取得する
    GetLastBookRank() int
    // GetCpuActions CPUターンの行動履歴を取得する
    GetCpuActions() []*domain.GoFishCpuAction
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.GoFishCpuAction
}

## type GolfGame

GolfGame ゴルフソリティアゲームインタフェース

type GolfGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Draw 山札からカードをめくる
    Draw() error
    // Remove タブローのカードを除去する
    Remove(col int) error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.GolfHint
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.GolfPhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetStockCount 山札の残り枚数を取得する
    GetStockCount() int
    // GetWaste ウェイストのカード一覧を取得する
    GetWaste() []*domain.Card
    // GetLayout レイアウトを取得する
    GetLayout() [domain.GolfColCnt][domain.GolfRowCnt]*domain.GolfCard
    // IsExposed カードが露出しているかを返す
    IsExposed(col, row int) bool
    // AllRemoved 全タブローカードが除去されたかを返す
    AllRemoved() bool
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type HeartsGame

HeartsGame ハーツゲームインタフェース

type HeartsGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerPass プレイヤーがカードをパスする
    PlayerPass(cardIndices []int) error
    // CpuPass CPUプレイヤーがカードをパスする
    CpuPass()
    // ExecutePass パス交換を実行する
    ExecutePass()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.HeartsConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.HeartsConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.HeartsPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.HeartsTrickCard
    // GetHeartsBroken ハーツブレイク済みかを返す
    GetHeartsBroken() bool
    // GetPassDirection パス方向を取得する
    GetPassDirection() domain.HeartsPassDirection
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.HeartsPlayer
    // GetPassReady 各プレイヤーのパス準備状態を取得する
    GetPassReady() [domain.HeartsPlayerCnt]bool
    // GetPassedCards 各プレイヤーのパスしたカードを取得する
    GetPassedCards() [domain.HeartsPlayerCnt][]*domain.Card
    // GetHint ヒントを取得する
    GetHint() *domain.HeartsHint
}

## type HoldemGame

HoldemGame テキサスホールデムゲームインタフェース

type HoldemGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.HoldemPlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.HoldemPlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetCommunityCards コミュニティカードを取得する
    GetCommunityCards() []*domain.Card
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.HoldemSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.HoldemResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.HoldemCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.HoldemConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.HoldemConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // Resize プレイヤー数を変更する
    Resize(players []*domain.HoldemPlayer)
    TournamentActionGame
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
    // GetEquity エクイティ計算結果を取得する
    GetEquity() *domain.HoldemEquityResult
    // GetPotOdds ポットオッズを取得する
    GetPotOdds() float64
}

## type IndianPokerGame

IndianPokerGame インディアンポーカーゲームインタフェース

type IndianPokerGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.IndianPokerPlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.IndianPokerPlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.IndianPokerSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.IndianPokerResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.IndianPokerCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.IndianPokerConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.IndianPokerConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.IndianPokerHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
}

## type KlondikeGame

KlondikeGame クロンダイクゲームインタフェース

type KlondikeGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // ResetWithConfig 指定設定でゲームを初期化する
    ResetWithConfig(cfg domain.KlondikeConfig)
    // Draw 山札からカードをめくる
    Draw() error
    // MoveWasteToTableau ウェイストからタブローにカードを移動する
    MoveWasteToTableau(col int) error
    // MoveWasteToFoundation ウェイストからファンデーションにカードを移動する
    MoveWasteToFoundation() error
    // MoveTableauToTableau タブロー間でカードを移動する
    MoveTableauToTableau(fromCol, cardIndex, toCol int) error
    // MoveTableauToFoundation タブローからファンデーションにカードを移動する
    MoveTableauToFoundation(col int) error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.KlondikeHint
    // AutoComplete 自動完了を実行する
    AutoComplete() error
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.KlondikePhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetStockCount 山札の残り枚数を取得する
    GetStockCount() int
    // GetWaste ウェイストのカード一覧を取得する
    GetWaste() []*domain.Card
    // GetTableau タブローを取得する
    GetTableau() [domain.KlondikeTableauCnt][]*domain.KlondikeTableauCard
    // GetFoundation ファンデーションを取得する
    GetFoundation() [domain.KlondikeFoundationCnt][]*domain.Card
    // AllFaceUp 全カードが表向きかを返す
    AllFaceUp() bool
    // GetDrawCount ドロー枚数設定を取得する
    GetDrawCount() int
    // GetScore 現在のスコアを取得する
    GetScore() int
    // GetScoringMode スコアリングモードを取得する
    GetScoringMode() domain.KlondikeScoringMode
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type MemoryGame

MemoryGame 神経衰弱ゲームインタフェース

type MemoryGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // PlayerFlip プレイヤーがカードをめくる
    PlayerFlip(pos int) error
    // CpuFlip CPUプレイヤーがカードをめくる
    CpuFlip()
    // ResolveFlip めくり結果を判定する
    ResolveFlip()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.MemoryConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.MemoryConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.MemoryPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetFirstFlipPos 1枚目のめくり位置を取得する
    GetFirstFlipPos() int
    // GetSecondFlipPos 2枚目のめくり位置を取得する
    GetSecondFlipPos() int
    // GetLastMatchResult 最後のめくりがマッチしたかを返す
    GetLastMatchResult() bool
    // GetTurnNumber 現在のターン番号を取得する
    GetTurnNumber() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.MemoryPlayer
    // GetBoard ボード全体を取得する
    GetBoard() [domain.MemoryBoardSize]*domain.MemoryBoardCard
    // GetBoardCard 指定位置のボードカードを取得する
    GetBoardCard(pos int) *domain.MemoryBoardCard
}

## type NapoleonGame

NapoleonGame ナポレオンゲームインタフェース

type NapoleonGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerBid プレイヤーがビッドする (0 = パス)
    PlayerBid(bid int) error
    // CpuBid CPUプレイヤーがビッドする
    CpuBid()
    // PlayerDeclareTrump 切り札と副官を宣言する
    PlayerDeclareTrump(suit int, adjSuit int, adjVal int) error
    // CpuDeclareTrump CPUナポレオンが切り札と副官を宣言する
    CpuDeclareTrump()
    // PlayerExchangeKitty 場札を交換する
    PlayerExchangeKitty(discardIndex int) error
    // CpuExchangeKitty CPUナポレオンが場札を交換する
    CpuExchangeKitty()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.NapoleonConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.NapoleonConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.NapoleonPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // IsHumanDeclareTurn 切り札宣言が人間の番かを返す
    IsHumanDeclareTurn() bool
    // IsHumanExchangeTurn 場札交換が人間の番かを返す
    IsHumanExchangeTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.NapoleonTrickCard
    // GetTrumpSuit 切り札スートを取得する
    GetTrumpSuit() int
    // GetAdjutantCard 副官カードを取得する
    GetAdjutantCard() *domain.Card
    // GetNapoleonIdx ナポレオンインデックスを取得する
    GetNapoleonIdx() int
    // GetAdjutantIdx 副官インデックスを取得する
    GetAdjutantIdx() int
    // GetAdjutantRevealed 副官公開状態を取得する
    GetAdjutantRevealed() bool
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetKitty 場札を取得する
    GetKitty() []*domain.Card
    // GetHighestBid 最高ビッドを取得する
    GetHighestBid() int
    // GetHighestBidder 最高ビッドプレイヤーを取得する
    GetHighestBidder() int
    // GetWinnerTeam 勝利チームを取得する
    GetWinnerTeam() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.NapoleonPlayer
    // GetValidPlayIndices プレイ可能なカードインデックスを取得する
    GetValidPlayIndices(playerIdx int) []int
    // GetHint ヒントを取得する
    GetHint() *domain.NapoleonHint
}

## type OhHellGame

OhHellGame オー・ヘルゲームインタフェース

type OhHellGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerBid プレイヤーがビッドする
    PlayerBid(bid int) error
    // CpuBid CPUプレイヤーがビッドする
    CpuBid()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.OhHellConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.OhHellConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.OhHellPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTotalRounds 総ラウンド数を取得する
    GetTotalRounds() int
    // GetHandSize 現在のラウンドの手札枚数を取得する
    GetHandSize() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.OhHellTrickCard
    // GetTrumpCard 切り札カードを取得する
    GetTrumpCard() *domain.Card
    // GetTrumpSuit 切り札スートを取得する (-1 = 切り札なし)
    GetTrumpSuit() int
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetRestrictedBid ディーラーが選択できないビッド値を返す (-1 = 制限なし)
    GetRestrictedBid() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.OhHellPlayer
    // GetValidPlayIndices プレイ可能なカードのインデックスリストを返す
    GetValidPlayIndices(playerIdx int) []int
    // GetHint ヒントを取得する
    GetHint() *domain.OhHellHint
}

## type OldMaidGame

OldMaidGame ババ抜きゲームインタフェース

type OldMaidGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // SetConfig ゲーム設定をセットする
    SetConfig(config domain.OldMaidConfig)
    // ArrangeTargetForHumanDraw 人間が引く前にCPU心理戦の配置を行う
    ArrangeTargetForHumanDraw()
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // PlayerDraw 人間プレイヤーがカードを引く
    PlayerDraw(cardIdx int) error
    // CpuDraw CPUプレイヤーが1ターン実行する
    CpuDraw() error
    // ShuffleHumanHand 人間の手札をシャッフルする
    ShuffleHumanHand() error
    // ReorderHumanHand 人間の手札を指定順に並び替える
    ReorderHumanHand(indices []int) error

    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.OldMaidHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error

    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.OldMaidPlayer
    // GetHasDrawn 引きが発生したかを返す
    GetHasDrawn() bool
    // GetLastDrawPlayerIdx 最後に引いたプレイヤーのインデックスを取得する
    GetLastDrawPlayerIdx() int
    // GetLastDrawFromIdx 最後に引いた相手のインデックスを取得する
    GetLastDrawFromIdx() int
    // GetLastDrawCard 最後に引いたカードを取得する
    GetLastDrawCard() *domain.Card
    // GetLastDiscardedPairs 最後に捨てたペア数を取得する
    GetLastDiscardedPairs() int
    // GetLastDiscardedCards 最後に捨てたカードを取得する
    GetLastDiscardedCards() []*domain.Card
    // GetCpuActions CPUターンの行動履歴を取得する
    GetCpuActions() []*domain.OldMaidCpuAction
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.OldMaidCpuAction
    // GetDrawHistory ゲーム全体の引き履歴を取得する
    GetDrawHistory() []*domain.OldMaidDrawHistoryEntry
    // GetLoserIdx 負けプレイヤーインデックスを取得する
    GetLoserIdx() int
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int
    // GetNextDrawTargetIdx 次の引き相手のインデックスを取得する
    GetNextDrawTargetIdx() int
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.OldMaidConfig
    // GetRemovedCard ジジ抜きで除外されたカードを取得する
    GetRemovedCard() *domain.Card
    // GetCpuHighlightedCardIdx CPU心理戦で強調された位置を取得する
    GetCpuHighlightedCardIdx() int
}

## type OmahaGame

OmahaGame オマハホールデムゲームインタフェース

type OmahaGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.OmahaPlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.OmahaPlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetCommunityCards コミュニティカードを取得する
    GetCommunityCards() []*domain.Card
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.OmahaSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.OmahaResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.OmahaCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.OmahaConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.OmahaConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // Resize プレイヤー数を変更する
    Resize(players []*domain.OmahaPlayer)
    TournamentActionGame
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
    // GetEquity エクイティ計算結果を取得する
    GetEquity() *domain.HoldemEquityResult
    // GetPotOdds ポットオッズを取得する
    GetPotOdds() float64
}

## type PigsTailGame

PigsTailGame ぶたのしっぽゲームインタフェース

type PigsTailGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // SetConfig ゲーム設定をセットする
    SetConfig(config domain.PigsTailConfig)
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // PlayerAction 人間プレイヤーのアクション (山札から1枚引く)
    PlayerAction(actionIdx int) error
    // CpuAction CPUプレイヤーが1ターン実行する
    CpuAction() error
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.PigsTailPlayer
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int
    // GetLoserIdx 負けプレイヤーインデックスを取得する
    GetLoserIdx() int
    // GetLastDrawCard 最後に引いたカードを取得する
    GetLastDrawCard() *domain.Card
    // GetLastPenalty 最後のアクションでペナルティが発生したかを取得する
    GetLastPenalty() bool
    // GetCpuActions CPUターンの行動履歴を取得する
    GetCpuActions() []*domain.PigsTailCpuAction
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.PigsTailCpuAction
    // GetCircleCount 山札の残り枚数を取得する
    GetCircleCount() int
    // GetCenter 中央の場札を取得する
    GetCenter() []*domain.Card
    // GetCenterTopCard 場札の一番上のカードを取得する
    GetCenterTopCard() *domain.Card
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.PigsTailConfig
}

## type PineappleGame

PineappleGame パイナップルポーカーゲームインタフェース

type PineappleGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // DiscardCard 人間プレイヤーが手札から1枚をディスカードする
    DiscardCard(cardIdx int) error
    // IsDiscardPhase ディスカードフェーズかどうか
    IsDiscardPhase() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.PineapplePlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.PineapplePlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetCommunityCards コミュニティカードを取得する
    GetCommunityCards() []*domain.Card
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.PineappleSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.PineappleResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.PineappleCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.PineappleConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.PineappleConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // Resize プレイヤー数を変更する
    Resize(players []*domain.PineapplePlayer)
    // GetDiscardDone ディスカード済みフラグ取得
    GetDiscardDone() []bool
    TournamentActionGame
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
    // GetEquity エクイティ計算結果を取得する
    GetEquity() *domain.HoldemEquityResult
    // GetPotOdds ポットオッズを取得する
    GetPotOdds() float64
}

## type PinochleGame

PinochleGame ピノクルゲームインタフェース

type PinochleGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerBid 人間プレイヤーがビッドする
    PlayerBid(amount int) error
    // PlayerPass 人間プレイヤーがパスする
    PlayerPass() error
    // CpuBid CPUがビッドまたはパスする
    CpuBid()
    // PlayerCallTrump 人間プレイヤーがトランプスートを宣言する
    PlayerCallTrump(suit int) error
    // CpuCallTrump CPUがトランプを宣言する
    CpuCallTrump()
    // ConfirmMelds メルドを確認してプレイフェーズに進む
    ConfirmMelds()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUがカードをプレイする
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.PinochleConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.PinochleConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.PinochlePhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.PinochleTrickCard
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetTrumpSuit 切り札スートを取得する
    GetTrumpSuit() int
    // GetHighestBid 最高ビッド額を取得する
    GetHighestBid() int
    // GetHighestBidder 最高ビッダーインデックスを取得する
    GetHighestBidder() int
    // GetTeamScore チームスコアを取得する
    GetTeamScore(team int) int
    // GetWinnerTeam 勝利チームを取得する
    GetWinnerTeam() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.PinochlePlayer
    // GetPlayerMelds プレイヤーのメルドを取得する
    GetPlayerMelds() [domain.PinochlePlayerCnt][]*domain.PinochleMeld
    // GetHint ヒントを取得する
    GetHint() *domain.PinochleHint
    // GetValidPlayIndices プレイ可能なカードのインデックスリストを返す
    GetValidPlayIndices(playerIdx int) []int
    // SortHand 手札をソートする
    SortHand(playerIdx int)
}

## type PokerGame

PokerGame ポーカーゲームインタフェース (マルチプレイヤー)

type PokerGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // PlayerExchange プレイヤーのカード交換を実行する
    PlayerExchange(indices []int) error
    // PlayerStand カード交換なしで続行する
    PlayerStand() error
    // CalcDrawOdds 交換候補に基づくドローオッズを計算する
    CalcDrawOdds(indices []int) ([]domain.PokerDrawOdds, error)

    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.PokerPlayer
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.PokerSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetAnte アンティ額を取得する
    GetAnte() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.PokerResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.PokerCpuAction
    // GetCpuExchanges CPU交換記録を取得する
    GetCpuExchanges() []domain.PokerCpuExchange
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.PokerConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.PokerConfig)
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
}

## type PyramidGame

PyramidGame ピラミッドゲームインタフェース

type PyramidGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Draw 山札からカードをめくる
    Draw() error
    // RemovePair ピラミッド上の2枚を合計13で除去する
    RemovePair(row1, col1, row2, col2 int) error
    // RemoveKing ピラミッド上のKを単独除去する
    RemoveKing(row, col int) error
    // RemoveWithWaste ウェイストとピラミッドのカードをペアで除去する
    RemoveWithWaste(row, col int) error
    // RemoveWasteKing ウェイストのKを単独除去する
    RemoveWasteKing() error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.PyramidHint
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.PyramidPhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetStockCount 山札の残り枚数を取得する
    GetStockCount() int
    // GetWaste ウェイストのカード一覧を取得する
    GetWaste() []*domain.Card
    // GetPyramid ピラミッドを取得する
    GetPyramid() [domain.PyramidRowCnt][]*domain.PyramidCard
    // IsExposed カードが露出しているかを返す
    IsExposed(row, col int) bool
    // AllRemoved 全ピラミッドカードが除去されたかを返す
    AllRemoved() bool
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type SevenCardStudGame

SevenCardStudGame セブンカードスタッドゲームインタフェース

type SevenCardStudGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    PlayerAction(action, amount, humanPlayMs int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.SevenCardStudPlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.SevenCardStudPlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetCommunityCard 共有カードを取得する (カード不足時のみ)
    GetCommunityCard() *domain.Card
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.SevenCardStudSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.SevenCardStudResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.SevenCardStudCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.SevenCardStudConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.SevenCardStudConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // Resize プレイヤー数を変更する
    Resize(players []*domain.SevenCardStudPlayer)
    TournamentActionGame
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
    // GetBringInPlayerIdx ブリングインプレイヤーインデックスを取得する
    GetBringInPlayerIdx() int
}

## type SevensGame

SevensGame 7並べゲームインタフェース

type SevensGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // SetConfig ゲーム設定をセットする
    SetConfig(config domain.SevensConfig)
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // HasAnyOption 指定プレイヤーが出せるカードまたはパスが可能かを返す
    HasAnyOption(playerIdx int) bool
    // AutoHandleNoOption 出せるカードもパスも不可の場合の自動処理
    AutoHandleNoOption()
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(idx int) error
    // PlayerPlayJoker プレイヤーがジョーカーを使って指定位置にカードを配置する
    PlayerPlayJoker(cardIdx, targetSuit, targetValue int) error
    // GetCurrentTurn 現在の手番プレイヤーインデックスを取得する
    GetCurrentTurn() int

    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.SevensPlayer
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.SevensConfig
    // GetTableMinVals 各スートの最小配置値を取得する
    GetTableMinVals() [5]int
    // GetTableMaxVals 各スートの最大配置値を取得する
    GetTableMaxVals() [5]int
    // GetHumanAction 人間の最後の行動記録を取得する
    GetHumanAction() *domain.SevensCpuAction
    // GetCpuActions CPU行動記録一覧を取得する
    GetCpuActions() []*domain.SevensCpuAction
    // GetTablePlaced 各スートの配置済みビットマスクを取得する
    GetTablePlaced() [5]uint16
}

## type ShortDeckGame

ShortDeckGame ショートデックホールデムゲームインタフェース

type ShortDeckGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset() error
    // PlayerAction プレイヤーのベッティングアクションを実行する
    // humanPlayMs: 迷い時間(ms, 0=計測なし)
    PlayerAction(action, amount, humanPlayMs int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetPlayers プレイヤー一覧を取得する
    GetPlayers() []*domain.ShortDeckPlayer
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.ShortDeckPlayer
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetCommunityCards コミュニティカードを取得する
    GetCommunityCards() []*domain.Card
    // GetPot ポット額を取得する
    GetPot() int
    // GetSidePots サイドポット一覧を取得する
    GetSidePots() []domain.ShortDeckSidePot
    // GetDealerIdx ディーラーインデックスを取得する
    GetDealerIdx() int
    // GetCurrentTurn 現在のターンを取得する
    GetCurrentTurn() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetLastBet 最後のベット額を取得する
    GetLastBet() int
    // GetMinRaise 最小レイズ額を取得する
    GetMinRaise() int
    // GetRaiseCount 現在のレイズ回数を取得する
    GetRaiseCount() int
    // GetRoundResults ラウンド結果を取得する
    GetRoundResults() []domain.ShortDeckResult
    // GetCpuActions CPU行動記録を取得する
    GetCpuActions() []domain.ShortDeckCpuAction
    // GetConfig ゲーム設定を取得する
    GetConfig() domain.ShortDeckConfig
    // SetConfig ゲーム設定を変更する
    SetConfig(cfg domain.ShortDeckConfig)
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // GetActedFlags 各プレイヤーのアクション済みフラグを取得する
    GetActedFlags() []bool
    // GetHandCount ハンド数を取得する
    GetHandCount() int
    // Resize プレイヤー数を変更する
    Resize(players []*domain.ShortDeckPlayer)
    TournamentActionGame
    // GetHumanProfile メタAIプロファイルを取得する
    GetHumanProfile() *domain.BettingHumanProfile
    // ResetProfile メタAIプロファイルをリセットする
    ResetProfile()
    // ExportProfile メタAIプロファイルをエクスポートする
    ExportProfile() interface{}
    // ImportProfile JSONバイトからメタAIプロファイルをインポートする
    ImportProfile(data []byte) error
    // GetEquity エクイティ計算結果を取得する
    GetEquity() *domain.HoldemEquityResult
    // GetPotOdds ポットオッズを取得する
    GetPotOdds() float64
}

## type SpadesGame

SpadesGame スペードゲームインタフェース

type SpadesGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // NextRound 次のラウンドを開始する
    NextRound()
    // PlayerBid プレイヤーがビッドする
    PlayerBid(bid int) error
    // CpuBid CPUプレイヤーがビッドする
    CpuBid()
    // PlayerPlay プレイヤーがカードを出す
    PlayerPlay(cardIndex int) error
    // CpuPlay CPUプレイヤーが1ターン実行する
    CpuPlay()
    // ResolveTrick トリックを解決する
    ResolveTrick()
    // NextTrick 次のトリックを開始する
    NextTrick()
    // ScoreRound ラウンドの得点を計算する
    ScoreRound()

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.SpadesConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.SpadesConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.SpadesPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsHumanBidTurn 現在のビッド手番が人間かを返す
    IsHumanBidTurn() bool
    // GetRoundNumber 現在のラウンド番号を取得する
    GetRoundNumber() int
    // GetTrickNumber 現在のトリック番号を取得する
    GetTrickNumber() int
    // GetCurrentPlayerIdx 現在のプレイヤーインデックスを取得する
    GetCurrentPlayerIdx() int
    // GetCurrentTrick 現在のトリックを取得する
    GetCurrentTrick() []*domain.SpadesTrickCard
    // GetSpadesBroken スペードブレイク済みかを返す
    GetSpadesBroken() bool
    // GetLeadPlayerIdx リードプレイヤーインデックスを取得する
    GetLeadPlayerIdx() int
    // GetBidPlayerIdx ビッドプレイヤーインデックスを取得する
    GetBidPlayerIdx() int
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.SpadesPlayer
    // GetHint ヒントを取得する
    GetHint() *domain.SpadesHint
}

## type SpeedGame

SpeedGame スピードゲームインタフェース

type SpeedGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // PlayerPlay 人間プレイヤーがカードを出す
    PlayerPlay(cardIndex, pileIndex int) error
    // CpuPlay CPUがカードを出す
    CpuPlay() []*domain.SpeedCpuAction
    // Flip 膠着時に台札をめくる
    Flip() error
    // UpdatePhase フェーズを再計算する
    UpdatePhase()

    // GetHint ヒントを返す
    GetHint() (cardIdx, pileIdx int, found bool)

    // GetConfig ゲーム設定を取得する
    GetConfig() domain.SpeedConfig
    // SetConfig ゲーム設定をセットする
    SetConfig(cfg domain.SpeedConfig)

    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.SpeedPhase
    // IsHumanTurn 現在の手番が人間かを返す
    IsHumanTurn() bool
    // IsStuck 膠着状態かを返す
    IsStuck() bool
    // GetPlayerCnt プレイヤー数を取得する
    GetPlayerCnt() int
    // GetPlayer 指定インデックスのプレイヤーを取得する
    GetPlayer(i int) *domain.SpeedPlayer
    // GetCenterPile 指定インデックスの台札を取得する
    GetCenterPile(i int) *domain.Card
    // GetWinnerIdx 勝者インデックスを取得する
    GetWinnerIdx() int
    // CanPlay 指定プレイヤーの手札カードが指定台札に出せるか
    CanPlay(playerIdx, cardIdx, pileIdx int) bool
    // PlayerHasAnyPlay 指定プレイヤーに出せる手があるか
    PlayerHasAnyPlay(playerIdx int) bool
}

## type SpiderGame

SpiderGame スパイダーソリティアゲームインタフェース

type SpiderGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // ResetWithConfig 指定設定でゲームを初期化する
    ResetWithConfig(cfg domain.SpiderConfig)
    // Deal ストックからタブローに配る
    Deal() error
    // MoveTableauToTableau タブロー間でカードを移動する
    MoveTableauToTableau(fromCol, cardIndex, toCol int) error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.SpiderHint
    // AutoComplete 自動完了を実行する
    AutoComplete() error
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.SpiderPhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetStockCount 山札の残り枚数を取得する
    GetStockCount() int
    // GetTableau タブローを取得する
    GetTableau() [domain.SpiderTableauCnt][]*domain.SpiderTableauCard
    // GetCompletedSuits 完成スート数を取得する
    GetCompletedSuits() int
    // AllFaceUp 全カードが表向きかを返す
    AllFaceUp() bool
    // GetScore 現在のスコアを取得する
    GetScore() int
    // GetDifficulty 難易度を取得する
    GetDifficulty() domain.SpiderDifficulty
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type ThreeCardGame

ThreeCardGame スリーカードポーカーゲームインタフェース

type ThreeCardGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Bet アンテベットを行いカードを配る
    Bet(ante, pairPlus int) error
    // Play プレイベットを置いて勝負する
    Play() error
    // Fold フォールドする
    Fold() error

    // GetPlayerHand プレイヤーハンドを取得する
    GetPlayerHand() []*domain.Card
    // GetDealerHand ディーラーハンドを取得する
    GetDealerHand() []*domain.Card
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetAnteBet アンテベット額を取得する
    GetAnteBet() int
    // GetPairPlusBet ペアプラスベット額を取得する
    GetPairPlusBet() int
    // GetPlayBet プレイベット額を取得する
    GetPlayBet() int
    // GetResult ゲーム結果を取得する
    GetResult() domain.GameResult
    // GetAntePayout アンテ配当を取得する
    GetAntePayout() int
    // GetPlayPayout プレイ配当を取得する
    GetPlayPayout() int
    // GetAnteBonusPayout アンテボーナス配当を取得する
    GetAnteBonusPayout() int
    // GetPairPlusPayout ペアプラス配当を取得する
    GetPairPlusPayout() int
    // GetTotalPayout 合計配当を取得する
    GetTotalPayout() int
    // GetDealerQualified ディーラークオリファイを取得する
    GetDealerQualified() bool
    // GetPlayerHandRank プレイヤーハンドランクを取得する
    GetPlayerHandRank() int
    // GetDealerHandRank ディーラーハンドランクを取得する
    GetDealerHandRank() int
    // GetChips チップを取得する
    GetChips() int
}

## type TournamentActionGame

TournamentActionGame トーナメントアクション共通インタフェース リバイ・アドオン・マック・ハンド公開など、ホールデム系ゲーム共通のトーナメント操作を定義する。

type TournamentActionGame interface {
    // Rebuy リバイを実行する
    Rebuy() error
    // SkipRebuy リバイをスキップする
    SkipRebuy() error
    // Addon アドオンを実行する
    Addon() error
    // SkipAddon アドオンをスキップする
    SkipAddon() error
    // IsRebuyAvailable リバイが可能かを返す
    IsRebuyAvailable() bool
    // IsAddonAvailable アドオンが可能かを返す
    IsAddonAvailable() bool
    // GetRebuyCounts 各プレイヤーのリバイ回数を取得する
    GetRebuyCounts() []int
    // GetAddonUsed 各プレイヤーのアドオン使用状態を取得する
    GetAddonUsed() []bool
    // GetRebuyPhaseType リバイフェーズ種別を取得する
    GetRebuyPhaseType() int
    // Muck ハンドをマックする
    Muck() error
    // ShowHand ハンドを公開する
    ShowHand() error
    // IsMuckAvailable マックが可能かを返す
    IsMuckAvailable() bool
}

## type TriPeaksGame

TriPeaksGame トリピークスゲームインタフェース

type TriPeaksGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Draw 山札からカードをめくる
    Draw() error
    // Remove タブローのカードを除去する
    Remove(row, col int) error
    // GiveUp ギブアップする
    GiveUp()
    // GetHint ヒントを取得する
    GetHint() *domain.TriPeaksHint
    // Undo 操作を元に戻す
    Undo() error

    // CanUndo 元に戻す操作が可能かを返す
    CanUndo() bool
    // UndoToEscape 膠着状態から抜けるために必要なアンドゥ回数を返す
    UndoToEscape() int
    // UndoN n回連続でアンドゥを実行する
    UndoN(n int) error
    // GetPhase 現在のフェーズを取得する
    GetPhase() domain.TriPeaksPhase
    // GetMoveCount 移動回数を取得する
    GetMoveCount() int
    // GetStockCount 山札の残り枚数を取得する
    GetStockCount() int
    // GetWaste ウェイストのカード一覧を取得する
    GetWaste() []*domain.Card
    // GetLayout レイアウトを取得する
    GetLayout() [domain.TriPeaksRowCnt][domain.TriPeaksColCnt]*domain.TriPeaksCard
    // IsExposed カードが露出しているかを返す
    IsExposed(row, col int) bool
    // AllRemoved 全タブローカードが除去されたかを返す
    AllRemoved() bool
    // IsStalemate 手詰まり状態を取得する
    IsStalemate() bool
}

## type VideoPokerGame

VideoPokerGame ビデオポーカーゲームインタフェース

type VideoPokerGame interface {
    BaseGame
    // Reset ゲームを初期化する
    Reset()
    // Bet ベットしてディールする
    Bet(amount int) error
    // Hold ホールド選択&ドロー
    Hold(indices []int) error

    // GetHand ハンドを取得する
    GetHand() []*domain.Card
    // GetPhase 現在のフェーズを取得する
    GetPhase() int
    // GetGameEndFlag ゲーム終了フラグを取得する
    GetGameEndFlag() bool
    // GetBetAmount ベット額を取得する
    GetBetAmount() int
    // GetChips チップを取得する
    GetChips() int
    // GetResult ゲーム結果を取得する
    GetResult() domain.GameResult
    // GetPayout 配当金額を取得する
    GetPayout() int
    // GetHandRank ハンドランクを取得する
    GetHandRank() int
    // GetHandName ハンド名を取得する
    GetHandName() string
    // GetHeldIndices ホールドインデックスを取得する
    GetHeldIndices() [domain.VideoPokerHandSize]bool
    // GetVariantName バリアント名を取得する
    GetVariantName() string
}

Generated by gomarkdoc