model

package
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2019 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MeldTypeChi    = iota // 吃
	MeldTypePon           // 碰
	MeldTypeAnkan         // 暗杠
	MeldTypeMinkan        // 大明杠
	MeldTypeKakan         // 加杠
)
View Source
const (
	TileTypeMan = 0
	TileTypePin = 1
	TileTypeSou = 2
)

Variables

This section is empty.

Functions

func InitLeftTiles34WithTiles34

func InitLeftTiles34WithTiles34(tiles34 []int) []int

TODO: 其他的也移过来

Types

type Meld

type Meld struct {
	MeldType int // 鸣牌类型(吃、碰、暗杠、大明杠、加杠)

	// Tiles == sort(SelfTiles + CalledTile)
	Tiles      []int // 副露的牌
	SelfTiles  []int // 手牌中组成副露的牌(用于鸣牌分析)
	CalledTile int   // 被鸣的牌

	// TODO: 重构
	ContainRedFive    bool // 是否包含赤5
	RedFiveFromOthers bool // 赤5是否来自他家(用于获取宝牌数)
}

func (*Meld) IsKan added in v0.2.3

func (m *Meld) IsKan() bool

是否为杠子

type PlayerInfo

type PlayerInfo struct {
	HandTiles34 []int  // 手牌,不含副露
	Melds       []Meld // 副露
	DoraTiles   []int  // 宝牌指示牌产生的宝牌,可以重复
	NumRedFives []int  // 按照 mps 的顺序,各个赤5的个数(手牌和副露中的)

	IsTsumo       bool // 是否自摸
	WinTile       int  // 自摸/荣和的牌
	RoundWindTile int  // 场风
	SelfWindTile  int  // 自风
	IsParent      bool // 是否为亲家
	IsDaburii     bool // 是否双立直
	IsRiichi      bool // 是否立直

	DiscardTiles []int // 自家舍牌,用于判断和率,是否振听等  *注意创建 PlayerInfo 的时候把负数调整成正的!
	LeftTiles34  []int // 剩余牌

	AvgUraDora float64 // 平均里宝牌个数,用于计算立直时的打点
}

func NewSimplePlayerInfo

func NewSimplePlayerInfo(tiles34 []int, melds []Meld) *PlayerInfo

func (*PlayerInfo) AddMeld added in v0.2.3

func (pi *PlayerInfo) AddMeld(meld Meld)

func (*PlayerInfo) CountDora added in v0.2.3

func (pi *PlayerInfo) CountDora() (count int)

根据手牌、副露、赤5,结合哪些是宝牌,计算出拥有的宝牌个数

func (*PlayerInfo) DiscardTile added in v0.2.3

func (pi *PlayerInfo) DiscardTile(tile int, isRedFive bool)

func (*PlayerInfo) FillLeftTiles34

func (pi *PlayerInfo) FillLeftTiles34()

func (*PlayerInfo) IsNaki added in v0.2.3

func (pi *PlayerInfo) IsNaki() bool

是否已鸣牌(暗杠不算) 可以用来判断该玩家能否立直,计算门清加符等

func (*PlayerInfo) IsOnlyRedFive added in v0.2.3

func (pi *PlayerInfo) IsOnlyRedFive(tile int) bool

手上的这种牌只有赤5

func (*PlayerInfo) UndoAddMeld added in v0.2.3

func (pi *PlayerInfo) UndoAddMeld()

func (*PlayerInfo) UndoDiscardTile added in v0.2.3

func (pi *PlayerInfo) UndoDiscardTile(tile int, isRedFive bool)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL