麻将服务器功能JAVA实现-胡牌的算法

胡牌的算法

    麻将是一款在中国很火的游戏,越来越多的棋牌公司都视他为必上的游戏,那么下面我就给大家讲解一下麻将的基本实现。

     麻将胡牌的算法:

    创建麻将的实体类:

麻将服务器功能JAVA实现-胡牌的算法_第1张图片

麻将服务器功能JAVA实现-胡牌的算法_第2张图片

 麻将胡牌基本算法是:123 或者 111 在加上一对将牌 就形成了它的胡牌。

假设现在有一副牌: 1万 , 2万 , 3万 , 4万 ,4万,4万 , 6筒 ,7筒 , 8筒 , 2条 , 2条 , 2条 , 5条 ,5条

1.先分类:有将的那一门 和 没有将的那一门,有将的那一门的牌数必定是:3*n+2 , 无将的那一门必定就是3*n

判断如下: 麻将服务器功能JAVA实现-胡牌的算法_第3张图片

 如果有任何一门不满足3*n,或者3*n+2 ,且3n+2 大于有且只有一门 , 则就不算是胡牌

2.找到有将的那一门 , 踢出两个相同的 , 剩下的能否连成连续的三个 , 或者 三个以上的

1万 , 2万 , 3万 , 4万 ,4万,4万 , 6筒 ,7筒 , 8筒 , 2条 , 2条 , 2条 , 5条 ,5条

有将的那一门是条,有可能出现的情况有两种:

1).将为2条  剩下的牌就是 2条 , 5条  ,5条 

2).将为5条 剩下的牌就是 2条 , 2条 ,2条

剩下的牌 第一种情况: 1万 , 2万 , 3万 , 4万 ,4万,4万 , 6筒 ,7筒 , 8筒 ,2条 , 5条 , 5条

               第二种情况:1万 , 2万 , 3万 , 4万 ,4万,4万 , 6筒 ,7筒 , 8筒 , 2条 , 2条 , 2条

思路:从最小的第一张牌开始连 , 一旦发现有连不上三个 或者 连不上相同的三个 , 即为胡牌失败

麻将服务器功能JAVA实现-胡牌的算法_第4张图片 麻将服务器功能JAVA实现-胡牌的算法_第5张图片

 2.七对的判断

麻将服务器功能JAVA实现-胡牌的算法_第6张图片

 3.测试代码

麻将服务器功能JAVA实现-胡牌的算法_第7张图片

 下一章节我们讲制作麻将内部的实现

 有什么优化的方法 或者 建议 , 大家可以通过留言的方式提出来

你可能感兴趣的:(游戏技术,游戏开发)