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

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

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

大概思路是这样的

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

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

1、我们首先找出可成为对子的牌有 m1,m2,m3,m4

2、初始化每一张牌的可能路线,比如 m1 可与其他牌组合成顺子,也可以自己当成刻子,m2 可以与其他牌成为顺子,可以自己变成刻子,可以自己变成杠,但当其作为对子的话就只有一个可能,与其他牌成为顺子

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

m1 = [顺]

m2 = [顺,刻,杠]

m3 = [顺,刻]

m4 = [顺,刻,杠]

那么可能的路线有

顺 顺 顺 顺

顺 顺 顺 刻

顺 顺 顺 杠

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

不知道有没有 bug

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

求大家指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值