麻将胡牌算法

本文实现了一个胡牌算法,目前支持视频中讲解的三种番型,更多番型或者其它番型大家可以结合当地的麻将进行二次开发,项目中不仅有后台胡牌算法,而且还配备了前台页面,开发人员可以在前台中直接输入麻将对应的数据,操作十分方便。具体细节请观看视频讲解

视频和demo下载地址:wisdomdd.cn

视频中的源码可以点击【下载实例】进行下载, 环境配置: Eclipse+Maven+JDK1.7

环境下载地址: http://www.wisdomdd.cn/Wisdom/category/getAllCategoryFile.htm


 胡牌前提:  共14张牌,可以凑成4个三张,1个对子

            三张牌: 3个一样的牌(3个1万)叫刻子,或者 3个顺序牌(1万,2万,3万)叫顺子

            对子:   二张一样的牌(2个1万)

            

 番型计算:   14张牌首先要满足胡牌的前提条件,然后再根据各个地方的胡牌规则进行番型计算,如果没有番型,则不能胡牌



 下面以下图对应的番型规则进行算法介绍

blob.png



胡牌前提对应的算法:

    类: MahjongStaticTool

     参数: MahjongTile[] mahjongTiles 麻将对应的14张牌

     参数: twoNum 对子的个数

     参数: threeNum  壳子+顺子的  数目

  我们以 threeNum=4, twoNum=1 即4个三张牌,1个二张牌为例

   tryCombination以递归方法来获取牌型数据, 最后将牌型数据存放在MahjongTile[][]二维数组中

   MahjongTile[][]共5组数据, 例: 第一组有3张牌, 第二组有3张牌,第三组有3张牌,第四组有2张牌,第五组有3张牌

public  static  MahjongTile[][] tryCombination(MahjongTile[] mahjongTiles,  int  twoNum,  int  threeNum)  
     {  
         return  MahjongStaticTool.tryCombination(mahjongTiles, twoNum, threeNum,  null );  
     }  
   
     private  static  MahjongTile[][] tryCombination(MahjongTile[] mahjongTiles,  int  twoNum,  int  threeNum, MahjongTile[][] saveMahjongTileses)  
     {  
         if  (mahjongTiles ==  null )  
         {  
             if  (twoNum ==  0  && threeNum ==  0 )  
             {  
                 return  saveMahjongTileses;  
             }  
             else  
             {  
                 return  null ;  
             }  
         }  
         if  (mahjongTiles.length == ((twoNum *  2 ) + (threeNum *  3 )))  
         {  
             if  (threeNum >  0 )  
             {  
                 //int[][] indexs = siphonThreeIndexs(mahjongTiles.length);  
                 int [][] indexs = getThreeSiphonByLength(mahjongTiles.length);
                 if  (indexs ==  null )  
                 {  
                    
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值