Documentation
¶
Index ¶
- Constants
- Variables
- func Ceil(src int, degree int) int
- func GetIndexes(tiles []Tile, n ...int8) ([]int, error)
- func IsXX(ttA, ttB TileType) bool
- func IsXXX(ttA, ttB, ttC TileType) bool
- func IsXXXX(ttA, ttB, ttC, ttD TileType) bool
- func IsXYZ(ttA, ttB, ttC TileType) bool
- func RemoveIndexes(tiles *[]Tile, n ...int)
- type Agari
- type BaseRule
- type DiscardTile
- type Fan
- type FieldWind
- type FuuroType
- type JapaneseBaseRule
- func (rule JapaneseBaseRule) Agaris(player *Player, last Tile) []Agari
- func (rule JapaneseBaseRule) CanAgari(player *Player, last Tile) ([]Agari, error)
- func (rule JapaneseBaseRule) CanNineYaochus(player *Player) error
- func (rule JapaneseBaseRule) CanRiichi(player *Player) ([]Tile, error)
- func (rule JapaneseBaseRule) CanRon(player *Player) ([]Agari, error)
- func (rule JapaneseBaseRule) CanTsumo(player *Player) ([]Agari, error)
- func (rule JapaneseBaseRule) DoraHints(count uint8, ura bool) []uint8
- func (rule JapaneseBaseRule) FuriTen(player *Player) bool
- func (rule JapaneseBaseRule) NineYaochus(player *Player) error
- func (JapaneseBaseRule) PlayersSitDown() Players
- func (rule JapaneseBaseRule) Riichi(player *Player, tile Tile) error
- func (rule JapaneseBaseRule) Ron(player *Player) error
- func (JapaneseBaseRule) RyanShanAmount() uint8
- func (JapaneseBaseRule) TileAmount() uint8
- func (rule JapaneseBaseRule) Tiles() []Tile
- func (rule JapaneseBaseRule) Tsumo(player *Player) error
- func (rule JapaneseBaseRule) WallLastTile() Tile
- func (rule JapaneseBaseRule) WallTilesCannotDraw() uint8
- type JapaneseHanChanRule
- type JapaneseTonPuuRule
- type Jun
- type Mahjong
- func (maj *Mahjong) AnKan(player *Player, tileType TileType) error
- func (maj *Mahjong) CanAnKan(player *Player) ([]TileType, error)
- func (maj *Mahjong) CanChii(player *Player) ([]TilesXY, error)
- func (maj *Mahjong) CanDahai(player *Player, tile Tile) (int, error)
- func (maj *Mahjong) CanKaKan(player *Player) ([]Tile, error)
- func (maj *Mahjong) CanKan(player *Player) (TilesXXX, error)
- func (maj *Mahjong) CanNineYaochus(player *Player) error
- func (maj *Mahjong) CanPon(player *Player) ([]TilesXX, error)
- func (maj *Mahjong) CanRestart() error
- func (maj *Mahjong) CanRiichi(player *Player) ([]Tile, error)
- func (maj *Mahjong) CanRon(player *Player) ([]Agari, error)
- func (maj *Mahjong) CanTsumo(player *Player) ([]Agari, error)
- func (maj *Mahjong) Chii(player *Player, tileA, tileB Tile) error
- func (maj *Mahjong) Dahai(player *Player, tile Tile) error
- func (maj *Mahjong) Dice() int
- func (maj *Mahjong) Dora() uint8
- func (maj *Mahjong) Draw(player *Player) (Tile, error)
- func (maj *Mahjong) DrawKan(player *Player) (Tile, error)
- func (maj *Mahjong) Haipai()
- func (maj *Mahjong) IsTurn(player *Player) bool
- func (maj *Mahjong) Jun() Jun
- func (maj *Mahjong) KaKan(player *Player, tile Tile) error
- func (maj *Mahjong) Kan(player *Player) error
- func (maj *Mahjong) NewWinningHandBase(player, atm *Player, sortedHandTiles []Tile) *WinningHandBase
- func (maj *Mahjong) NineYaochus(player *Player) error
- func (maj *Mahjong) Output(v ...interface{})
- func (maj *Mahjong) PlayerCan(player *Player) *PlayerActions
- func (maj *Mahjong) Pon(player *Player, tileA, tileB Tile) error
- func (maj *Mahjong) RemainderTilesAll() uint8
- func (maj *Mahjong) RemainderTilesCanDraw() uint8
- func (maj *Mahjong) Restart() error
- func (maj *Mahjong) Riichi(player *Player, tile Tile) error
- func (maj *Mahjong) Ron(player *Player) error
- func (maj *Mahjong) Shuffle()
- func (maj *Mahjong) Stack() error
- func (maj *Mahjong) Start() error
- func (maj *Mahjong) Tsumo(player *Player) error
- type NoTiles
- type NotTurn
- type Phase
- type Player
- func (player *Player) Concealed() bool
- func (player *Player) GetTileTypeIndexes(tileType TileType) []int
- func (player *Player) GetTilesIndexes(tiles ...Tile) ([]int, error)
- func (player *Player) HasDiscarded(tile Tile) bool
- func (player *Player) IsParent(round Round) bool
- func (player *Player) Wind(round Round) FieldWind
- type PlayerActions
- type Players
- func (players *Players) Do(fn func(players *Player))
- func (players *Players) FindField(field FieldWind) *Player
- func (players *Players) FindWind(wind FieldWind, round Round) *Player
- func (players *Players) Left(player *Player) *Player
- func (players *Players) Move(dice int) *Player
- func (players *Players) Next() *Player
- func (players *Players) Now() *Player
- func (players *Players) Parent(round Round) *Player
- func (players *Players) Right(player *Player) *Player
- func (players *Players) Set(player *Player)
- func (players *Players) Start() *Player
- func (players *Players) ToNext() *Player
- func (players *Players) Toimen(player *Player) *Player
- type Quad
- type Result
- type ResultData
- type ResultType
- type Round
- type Rule
- type ScoreSrc
- type Sequential
- type Suit
- type Tile
- type TileType
- func (tileType TileType) IsActiveWind(w1 FieldWind) bool
- func (tileType TileType) IsBamboo() bool
- func (tileType TileType) IsCharacter() bool
- func (tileType TileType) IsDots() bool
- func (tileType TileType) IsDragon() bool
- func (tileType TileType) IsGreen() bool
- func (tileType TileType) IsHonor() bool
- func (tileType TileType) IsSuit() bool
- func (tileType TileType) IsTerminals() bool
- func (tileType TileType) IsWind() bool
- func (tileType TileType) IsYaochu() bool
- func (tileType TileType) Number() int8
- func (tileType TileType) SameSuit(other TileType) bool
- func (tileType TileType) Suit() Suit
- func (tileType TileType) Wind() FieldWind
- type TilesXX
- type TilesXXX
- type TilesXY
- type TilesXYZ
- type Triplet
- type WinningHand
- type WinningHand13
- type WinningHand7
- type WinningHandBase
- type WinningHandNormal
- type WrongPhase
- type Yaku
Constants ¶
View Source
const ( TonBa = EastField NanBa = SouthField PeiBa = NorthField )
Variables ¶
View Source
var TilesName = map[TileType]string{ Dots1: "1p", Dots2: "2p", Dots3: "3p", Dots4: "4p", Dots5: "5p", Dots6: "6p", Dots7: "7p", Dots8: "8p", Dots9: "9p", Bamboo1: "1s", Bamboo2: "2s", Bamboo3: "3s", Bamboo4: "4s", Bamboo5: "5s", Bamboo6: "6s", Bamboo7: "7s", Bamboo8: "8s", Bamboo9: "9s", Characters1: "1m", Characters2: "2m", Characters3: "3m", Characters4: "4m", Characters5: "5m", Characters6: "6m", Characters7: "7m", Characters8: "8m", Characters9: "9m", East: "1z", South: "2z", West: "3z", North: "4z", White: "5z", Green: "6z", Red: "7z", }
View Source
var YakuTachi = []Yaku{ { Name: "立直", FanFR: 役無, FanMZ: 一飜, Check: WinningHand.readyHand, Upgrade: []Yaku{ { Name: "ダブル立直", FanFR: 役無, FanMZ: 二飜, Check: WinningHand.doubleReady, }, }, }, { Name: "一発", FanFR: 役無, FanMZ: 一飜, Check: WinningHand.oneShot, }, { Name: "門前清自摸和", FanFR: 役無, FanMZ: 一飜, Check: WinningHand.selfPick, }, { Name: "断么九", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.allSimples, }, { Name: "平和", FanFR: 役無, FanMZ: 一飜, Check: WinningHand.allRuns, }, { Name: "一盃口", FanFR: 役無, FanMZ: 一飜, Check: WinningHand.doubleRun, Upgrade: []Yaku{ { Name: "二盃口", FanFR: 役無, FanMZ: 三飜, Check: WinningHand.twoDoubleRuns, }, }, }, { Name: "役牌(仮)", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.honorTiles, Upgrade: []Yaku{ { Name: "場風牌", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.prevailingWind, }, { Name: "門風牌", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.playerWind, }, { Name: "役牌白", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.whiteDragon, }, { Name: "役牌發", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.greenDragon, }, { Name: "役牌中", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.redDragon, }, }, }, { Name: "嶺上開花", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.kingsTileDraw, }, { Name: "搶槓", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.addAQuad, }, { Name: "海底摸月", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.finalTurnWinSeaMoon, }, { Name: "河底撈魚", FanFR: 一飜, FanMZ: 一飜, Check: WinningHand.finalTurnWinRiverFish, }, { Name: "三色同順", FanFR: 一飜, FanMZ: 二飜, Check: WinningHand.threeColorRuns, }, { Name: "一気通貫", FanFR: 一飜, FanMZ: 二飜, Check: WinningHand.fullStraight, }, { Name: "混全帯么九", FanFR: 一飜, FanMZ: 二飜, Check: WinningHand.terminalOrHonorInEachSet, Upgrade: []Yaku{ { Name: "混老頭", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.allTerminalsAndHonors, }, { Name: "純全帯么九", FanFR: 二飜, FanMZ: 三飜, Check: WinningHand.terminalInEachSet, }, }, }, { Name: "七対子", FanFR: 役無, FanMZ: 二飜, Check: WinningHand.sevenPairs, }, { Name: "対々和", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.allTripletHand, }, { Name: "三暗刻", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.threeClosedTriples, }, { Name: "三色同刻", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.threeColourTriplets, }, { Name: "三槓子", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.threeKans, }, { Name: "小三元", FanFR: 二飜, FanMZ: 二飜, Check: WinningHand.littleThreeDragons, }, { Name: "混一色", FanFR: 二飜, FanMZ: 三飜, Check: WinningHand.halfFlush, Upgrade: []Yaku{ { Name: "清一色", FanFR: 五飜, FanMZ: 六飜, Check: WinningHand.fullFlush, }, }, }, { Name: "国士無双", FanFR: 役無, FanMZ: 役満, Check: WinningHand.thirteenOrphans, }, { Name: "四暗刻", FanFR: 役無, FanMZ: 役満, Check: WinningHand.fourConcealedTriples, }, { Name: "大三元", FanFR: 役満, FanMZ: 役満, Check: WinningHand.bigThreeDragons, }, { Name: "字一色", FanFR: 役満, FanMZ: 役満, Check: WinningHand.allHonors, }, { Name: "小四喜", FanFR: 役満, FanMZ: 役満, Check: WinningHand.littleFourWinds, }, { Name: "大四喜", FanFR: 役満, FanMZ: 役満, Check: WinningHand.bigFourWinds, }, { Name: "緑一色", FanFR: 役満, FanMZ: 役満, Check: WinningHand.allGreen, }, { Name: "清老頭", FanFR: 役満, FanMZ: 役満, Check: WinningHand.allTerminals, }, { Name: "四槓子", FanFR: 役満, FanMZ: 役満, Check: WinningHand.fourKans, }, { Name: "九蓮宝燈", FanFR: 役無, FanMZ: 役満, Check: WinningHand.nineGates, }, { Name: "天和", FanFR: 役無, FanMZ: 役満, Check: WinningHand.heavenlyHand, }, { Name: "地和", FanFR: 役無, FanMZ: 役満, Check: WinningHand.handOfEarth, }, }
View Source
var Yaochu = []TileType{Dots1, Dots9, Bamboo1, Bamboo9, Characters1, Characters9, East, South, West, North, White, Green, Red}
Functions ¶
func RemoveIndexes ¶
Types ¶
type DiscardTile ¶
type JapaneseBaseRule ¶
type JapaneseBaseRule struct {
BaseRule
}
func (JapaneseBaseRule) Agaris ¶
func (rule JapaneseBaseRule) Agaris(player *Player, last Tile) []Agari
func (JapaneseBaseRule) CanAgari ¶
func (rule JapaneseBaseRule) CanAgari(player *Player, last Tile) ([]Agari, error)
func (JapaneseBaseRule) CanNineYaochus ¶
func (rule JapaneseBaseRule) CanNineYaochus(player *Player) error
途中流局
func (JapaneseBaseRule) CanRiichi ¶
func (rule JapaneseBaseRule) CanRiichi(player *Player) ([]Tile, error)
func (JapaneseBaseRule) CanRon ¶
func (rule JapaneseBaseRule) CanRon(player *Player) ([]Agari, error)
func (JapaneseBaseRule) CanTsumo ¶
func (rule JapaneseBaseRule) CanTsumo(player *Player) ([]Agari, error)
func (JapaneseBaseRule) DoraHints ¶
func (rule JapaneseBaseRule) DoraHints(count uint8, ura bool) []uint8
func (JapaneseBaseRule) FuriTen ¶
func (rule JapaneseBaseRule) FuriTen(player *Player) bool
func (JapaneseBaseRule) NineYaochus ¶
func (rule JapaneseBaseRule) NineYaochus(player *Player) error
func (JapaneseBaseRule) PlayersSitDown ¶
func (JapaneseBaseRule) PlayersSitDown() Players
func (JapaneseBaseRule) Riichi ¶
func (rule JapaneseBaseRule) Riichi(player *Player, tile Tile) error
func (JapaneseBaseRule) Ron ¶
func (rule JapaneseBaseRule) Ron(player *Player) error
func (JapaneseBaseRule) RyanShanAmount ¶
func (JapaneseBaseRule) RyanShanAmount() uint8
func (JapaneseBaseRule) TileAmount ¶
func (JapaneseBaseRule) TileAmount() uint8
func (JapaneseBaseRule) Tiles ¶
func (rule JapaneseBaseRule) Tiles() []Tile
func (JapaneseBaseRule) Tsumo ¶
func (rule JapaneseBaseRule) Tsumo(player *Player) error
func (JapaneseBaseRule) WallLastTile ¶
func (rule JapaneseBaseRule) WallLastTile() Tile
func (JapaneseBaseRule) WallTilesCannotDraw ¶
func (rule JapaneseBaseRule) WallTilesCannotDraw() uint8
type JapaneseHanChanRule ¶
type JapaneseHanChanRule struct {
JapaneseBaseRule
}
func (JapaneseHanChanRule) MaxRound ¶
func (JapaneseHanChanRule) MaxRound() *Round
type JapaneseTonPuuRule ¶
type JapaneseTonPuuRule struct {
JapaneseBaseRule
}
func (JapaneseTonPuuRule) MaxRound ¶
func (JapaneseTonPuuRule) MaxRound() *Round
type Mahjong ¶
type Mahjong struct { Round Rule Players Result Seed *rand.Rand NextTile uint8 Tiles []Tile LastTile Tile LastTilePlayer *Player KanCount uint8 }
func InitWithSeed ¶
func (*Mahjong) CanNineYaochus ¶
func (*Mahjong) CanRestart ¶
func (*Mahjong) NewWinningHandBase ¶
func (maj *Mahjong) NewWinningHandBase(player, atm *Player, sortedHandTiles []Tile) *WinningHandBase
func (*Mahjong) NineYaochus ¶
func (*Mahjong) PlayerCan ¶
func (maj *Mahjong) PlayerCan(player *Player) *PlayerActions
func (*Mahjong) RemainderTilesAll ¶
func (*Mahjong) RemainderTilesCanDraw ¶
type Player ¶
type Player struct { FieldWind Score int Phase Riichi Jun Tiles []Tile XXXs []Triplet XYZs []Sequential XXXXs []Quad Discards []DiscardTile LastDraw Tile Through bool // contains filtered or unexported fields }
func (*Player) GetTileTypeIndexes ¶
func (*Player) GetTilesIndexes ¶
func (*Player) HasDiscarded ¶
type PlayerActions ¶
type Result ¶
type Result struct { ResultType // contains filtered or unexported fields }
type ResultData ¶
type ResultType ¶
type ResultType int8
const ( NoResult ResultType = 0 AgariResult ResultType = 1 DrawResult ResultType = 2 )
type Round ¶
type Rule ¶
type Rule interface { Init(maj *Mahjong) PlayersSitDown() Players Tiles() []Tile MaxRound() *Round WallTilesCannotDraw() uint8 CanRiichi(player *Player) ([]Tile, error) Riichi(player *Player, tile Tile) error CanRon(player *Player) ([]Agari, error) Ron(player *Player) error CanTsumo(player *Player) ([]Agari, error) Tsumo(player *Player) error CanNineYaochus(player *Player) error NineYaochus(player *Player) error CanAgari(player *Player, last Tile) ([]Agari, error) }
type Sequential ¶
func FindSequential ¶
func FindSequential(tiles []Tile) ([]Sequential, error)
func (*Sequential) ToTileType ¶
func (sequential *Sequential) ToTileType() []TileType
type TileType ¶
type TileType int8
const ( None TileType = iota Dots1 Dots2 Dots3 Dots4 Dots5 Dots6 Dots7 Dots8 Dots9 Bamboo1 Bamboo2 Bamboo3 Bamboo4 Bamboo5 Bamboo6 Bamboo7 Bamboo8 Bamboo9 Characters1 Characters2 Characters3 Characters4 Characters5 Characters6 Characters7 Characters8 Characters9 East South West North White Green Red PlumBlossom Orchid Chrysanthemum Bamboo Spring Summer Autumn Winter )
func SortTileTypes ¶
func (TileType) IsActiveWind ¶
func (TileType) IsCharacter ¶
func (TileType) IsTerminals ¶
type Triplet ¶
func (*Triplet) ToTileType ¶
type WinningHand ¶
type WinningHand7 ¶
type WinningHand7 struct { WinningHandBase XX [7][2]TileType }
七対子の和了形
func (*WinningHand7) CountFu ¶
func (hand *WinningHand7) CountFu(bool) int
type WinningHandBase ¶
type WinningHandBase struct { Rule Jun LastTile Tile Player *Player Atm *Player Round Round SortedTileTypes []TileType SortedHandTiles []Tile RemainderTilesCanDraw uint8 }
和了形
type WinningHandNormal ¶
type WinningHandNormal struct { WinningHandBase XX [2]TileType XXXs [][3]TileType XYZs [][3]TileType Triplets []Triplet Sequential []Sequential Quad []Quad Head TilesXX }
一般的な和了形
func (*WinningHandNormal) CountFu ¶
func (hand *WinningHandNormal) CountFu(menZen bool) int
type WrongPhase ¶
func (WrongPhase) Error ¶
func (err WrongPhase) Error() string
Source Files
¶
Click to show internal directories.
Click to hide internal directories.