有人讨论下麻将胡牌,出牌算法吗,求思路

2019-06-04 15:15:57 +08:00
 simonlu9

前段时间学会了打麻将,觉得老祖宗的智慧真的博大精深,很好玩,食胡的时候真兴奋啊,于是空余时间就想自己写个麻将游戏出来,模仿欢乐麻将那种,数学差,想了两个礼拜才想出一个胡牌算法,前段时间学会了打麻将。

觉得老祖宗的智慧真的博大精深,很好玩,食胡的时候真兴奋啊,于是空余时间就想自己写个麻将游戏出来,模仿欢乐麻将那种,数学差,想了两个礼拜才想出一个胡牌算法,

源码 https://github.com/simonlu9/majiang/blob/master/tests/HuTest.php

大概思路是这样的 比如你手中的牌是这样的 m 代表是万子的意思

['m1','m1','m1','m2','m2','m2','m2','m3','m3','m3','m4','m4','m4','m4'];

如上所述,我们可以得出 ,当 m1 为对子的时候,所有牌的可能性

那么可能的路线有

等等,相当于一个排列算法,这里就有 132*3 = 12 种可能性,若到最后每种牌剩余数都为 0,则胡牌,当 m1 作对子不成立时候,依次尝试 m2,m3,m4 作对子,重复以上的步骤,都不行的话就不能胡了 不知道有没有 bug

第二个就是出牌的算法,目前只想到把自己手中的牌计分,分低的优先出牌,比如一些孤张,边张的,还有一些牌效重复的比如 134 679 一般都会舍去 1 和 9,还有一些就是要算打出的牌失张和进张的比例,感觉很复杂,没有一个完整的思路。

求大家指导!

8211 次点击
所在节点    程序员
60 条回复
godoway
2019-06-04 18:30:28 +08:00
@murmur 算役还好,写算符才蛋疼,当你写好算符的时候差不多就是写了半个游戏逻辑了。
bzq2810
2019-06-04 18:30:55 +08:00
考不考虑国士无双和九莲宝灯这类牌型?
sardine
2019-06-04 18:35:00 +08:00
带惠么?
simonlu9
2019-06-04 18:42:41 +08:00
@bzq2810 九宝莲灯也可以啊
@sardine 不带鬼
simonlu9
2019-06-04 18:43:06 +08:00
@lkan 斗地主还没想过呢,不过应该没麻将难
simonlu9
2019-06-04 18:43:49 +08:00
@msg7086 在 github 上看过,不过没看懂思路
simonlu9
2019-06-04 18:44:43 +08:00
@dallaslu 确实 6,用正则实现
simonlu9
2019-06-04 18:46:41 +08:00
@newtype0092 可以啊,有源码参考一下吗,现在还有一个问题是,胡牌写出来,如果效率可以的话我觉得听牌的效率也会提高,听牌的思路不知道是不是遍历每一张牌去判断
simonlu9
2019-06-04 18:47:17 +08:00
@rogwan 确实,麻将这种太复杂
simonlu9
2019-06-04 18:48:09 +08:00
@Narwhal 哈哈,我之前也是看日麻学麻将的,因为老是输,所以看看有没有一些技巧和套路,日麻研究麻将确实是有一套
simonlu9
2019-06-04 18:49:04 +08:00
@luob 问题有一个,没胡之前怎么判断那一张牌出呢
simonlu9
2019-06-04 18:50:12 +08:00
@zsc8917zsc 可以,变成七对子啦,不过这个算法不考虑,特殊胡牌型可以单独处理
icekingcy
2019-06-04 18:52:21 +08:00
还要考虑一些癞子玩法,嘿嘿嘿…

最佳做法只能查表
simonlu9
2019-06-04 18:56:14 +08:00
@jsun 这个好像没有自动出牌的功能
simonlu9
2019-06-04 18:57:40 +08:00
@icekingcy 查表的思路是不是把胡牌的所有可能牌型整理成一个表,然后去查,是不是这样
wploey
2019-06-04 19:00:19 +08:00
想做成小程序之类的,但是实力不允许🤣
kevinlm
2019-06-04 19:00:56 +08:00
哈夫曼算法呀…
ejq
2019-06-04 19:31:21 +08:00
NOI 2014 团体对抗赛(
duan602728596
2019-06-04 19:38:04 +08:00
还有 huì儿、十三幺、七对的胡牌呢
BiteTheDust
2019-06-04 20:07:18 +08:00
搞估价函数那套吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/570771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX