麻将Ai设计思路(go语言实现).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
⿇将Ai设计思路(go语⾔实现) 设计思路 由于⿇将胡牌规则固定(只是牌型不同):3m+2(3指的是顺⼦、刻⼦,2指的是将牌(⼀对))。⽐如有个牌型123万789条⽩⽩⽩中 中,这个⼿牌就是胡牌的牌型,其中m=3。  想要形成胡牌的牌型,我们需要保留当前牌型中的顺⼦、刻⼦和对,以及可以形成成顺⼦的差⼀张牌的牌(⽐如13,差⼀张2。⽐如 34,差⼀个2或者5。)。这样⼦拆分后的牌剩下的只有单牌,所以我们出牌时可以先将单牌打出,然后再根据摸得新的牌,重新分析,最 后形成听牌牌型。当有事件(吃碰杠)时,我们可以对每⼀个事件分析⼀次牌型,然后根据形成的牌型所产⽣的单牌、以及可以形成单牌的 牌的权重⽐,来进⾏计算当前事件触发后对于牌型改变的优先级。(⽐如:对于单牌权重要占⽤⽐例⽐较⼤,可以是0.6以上;然后13牌⽐例 次之,可以是0.25,最后的23牌可以是0.15)。  要分析牌型,我们就需要为牌型新建⼀个结构体: 分析牌型⼯具,⾸先找出所有的顺⼦,然后再讲所有刻⼦找到,然后找出可以形成顺⼦的牌(⽐如, 之类的),然后剩余的牌,就是可以打出的牌 // 23 13 ⼀种牌型⾥⾯的都是索引 // ( ) type TileType struct { 顺⼦切⽚,只记录第⼀个 Array_S []byte // 刻⼦切⽚,只记录第⼀个 Array_k []byte // 可以做将牌的牌,只记录第⼀个 Array_j []byte // 单牌 Array_d []byte // 间隔相差 张牌的牌,记录第⼀个 Array_1_3 []byte // 1 左右相差⼀张牌的牌,记录第⼀个 Array_34 []byte // 所有牌索引 Array_tile_index []byte // 什么动作之后的分析牌型。⽐如,普通出牌时的摸牌操作,或吃碰杠等 mask byte // 动作牌值 tile byte // } 在上⾯的结构体中,我们是以顺⼦座位第⼀顺位,然后才是刻⼦、对⼦、34、13。  接下来就是对于牌型的提取: 分析牌型 // func AnaTileType(tileIndexs []byte, mask byte, tile byte) *TileType { tt := TileType{} tt .mask = mask tt .tile = tile tt .Array_tile_index = append(tt.Array_tile_index, tileIndexs...) ti := tt .Array_tile_index 提取顺⼦ // 123 23 13 for i := byte(0); i 7; i++ { v := ti[i] 顺⼦ if v != 0 ti[i+1] != 0 ti[i+2] != 0 { // tt.Array_S = append(tt.Array_S, i) ti[i]-- ti[i+1]-- ti[i+2]-- } } 提取将刻⼦ // for i, v := range ti { if v == 2 { tt.Array_j = append(tt.Array_j, byte(i)) ti[i] = 0 continue } if v == 3 { tt.Array_k = append(tt.Array_k, byte(i)) ti[i] = 0 } } 提取类似 的顺⼦模型 // 34 for i := byte(0); i 7; i++ { if ti[i] != 0 ti[i+1] != 0 ti[i+2] == 0

文档评论(0)

千帆起航 + 关注
实名认证
文档贡献者

走过路过,不要错过!

1亿VIP精品文档

相关文档