Skip to content

AnkoGo/mahjong

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

麻将算法封装

  • 此库主要包括了

    • 牌墙算法
    • 听牌算法
    • 胡牌算法
    • 出牌推荐算法
    • 扩展玩法设置
  • 麻将牌的定义

1 ~ 9 : 一万 ~ 9万	11 ~ 19 : 一条 ~ 9条	21 ~ 29 : 一筒 ~ 9筒	31 ~ 34 : 东南西北风	41 : 发财	42 : 红中	43 : 白板	51 ~ 54 : 春夏秋冬	61 ~ 64 : 四种花色 
  • 牌墙
import "github.com/fwhappy/mahjong/wall" func main() {	// 初始化牌墙	w := wall.NewWall()	w.SetTiles([]int{1,1,1,1,2,2,2,2})	// 洗牌	w.Shuffle()	// 从前面抓一张	wall.ForwardDraw()	// 从前面抓多张	wall.ForwardDrawMulti()	// 从后面抓一张	wall.BackwardDraw()	// 是否已抓完	wall.IsAllDrawn() } 
  • 胡牌算法
import "github.com/fwhappy/mahjong/win"	func main() {	// 手牌	handTiles := []int{1,2,3,4,5,6,7,7}	// 明牌	showTiles := []int{}	// 根据用户手牌和明牌来判断用户是否可以胡牌	isWin := win.CanWin(handTiles, showTiles)	} 
  • 听牌算法
import "github.com/fwhappy/mahjong/ting"	func main() {	// 根据手牌、弃牌计算当前牌型,所有听牌的可能	// 返回map[int][]int, 表示打出key,能胡value中的这些牌	// 手牌	handTiles := []int{1,2,3,4,5,6,7,7}	// 明牌	showTiles := []int{}	ting.GetTingMap(handTiles, showTiles)	// 检测当前手牌、弃牌是否已停牌	ting.CanTing(handTiles, showTiles)	} 
  • 选牌算法(AI)
import "github.com/fwhappy/mahjong/suggest"	func main() {	ms := suggest.NewMSelector()	// 根据用户手牌、明牌,弃牌(所有人的)	// 计算出用户当前应该出什么牌	// 手牌	handTiles := []int{1,2,3,4,5,6,7,7}	// 明牌	showTiles := []int{}	// 弃牌	discardTiles := []int{}	// 设置参数	ms.SetAILevel(aiLevel) // AI等级	ms.SetLack(lack)	// 缺的牌	ms.SetHandTilesSlice(handTiles)	ms.SetShowTilesSlice(showTiles)	ms.SetDiscardTilesSlice(discardTiles)	// 选牌	tile := ms.GetSuggest()	} 

About

麻将算法汇总

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 100.0%