摘要:麻将游戏软件的开发,就其内核部分,大致可以分为自动发牌、自动智能出牌、吃碰杠的处理、听牌判断、胡牌判断、基于不同麻将玩法规则的番数计算等几大部分。其中以自动智能出牌、听牌判断、胡牌判断等处理最为复杂。这里主要介绍听牌牌型的算法设计思想。
关键词:麻将游戏;听牌牌型;成牌牌型;VB6.0
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)11-2602-03
麻将的牌局虽然复杂且变化无常,但构成手中的13张牌也就只有两类:数牌⑴、字牌⑵。听牌的牌型,也只可能是由此2类中的1-2类组成,并且,其中一类或一部分必须得是成牌牌型,另一类或其一部分才能构成听牌牌型⑶。如此理解后可知,要分析听牌,首先要分析最基本的单类牌的听牌牌型。根据麻将的胡牌机理,数牌与字牌是属不同的类型,它们的听牌牌型分析要分别处理。
1 数牌的听牌牌型分析
数牌中虽包括条、筒、万牌,但同属一类,对它们的听牌牌型分析方法是一样的,下面以条为例来分析。
对于条而言,任何一次听牌时,手中条的数量只可能是:0、1、2、4、5、7、8、10、11、13中的任一数目,其它数目的条均不能构成听牌牌型。所以对于条的听牌牌型分析,只限于数目为1、2、4、5、7、8、10、11、13的分析。
1) 1张牌的听牌牌型:A型,用[1]表示,定为基本听牌牌型。
2) 2张牌的听牌牌型:只能是AA⑷、AB、AC型,用[2]表示,定为基本听牌牌型。
3) 4张牌的听牌牌型有:①ABCD、ABCF、AAAB等可分解成左或右三张是成牌牌型,听右或左[1]的,用[3]和[1]的组合表示(其中:[3]表示3张牌是成牌牌型,[1]表示1张牌eVs+S2HjEv4ucIrq9GoUdqxgDbYOrpWzCLQCjKIjnEI=是听牌牌型,称它是[3]和[1]的组合型);②AABB、AABC 、AAAB等可分解成左或右二张是成牌牌型,听右或左[2]的,称它是[2]和[2]的组合型;③ABBC型,不能用成牌牌型+基本听牌牌型[1]、[2]来分解的,称之为特殊听牌牌型。
4) 5张牌的听牌牌型有:①AAABB、AABCD等 [3]和[2]组合型;②ABBBC、ABBCC、AABCC等特殊听牌牌型。
5) 7张牌的听牌牌型有:①[2]和[5]、[3]和[4]、[5]和[2]、[6]和[1]的组合型;②AABBBCC等特殊听牌牌型。
6) 8张牌的听牌牌型有:①[6]和[2]、[3]和[5]的组合型;②AABBBCCC等特殊听牌牌型。
7) 10张牌的听牌牌型有:[2]和[8]、[3]和[7]、[6]和[4]等组合型。
8) 11张牌的听牌牌型有:[2]和[9]、[3]和[8]、[5]和[6]等组合型。
9) 13张牌的听牌牌型有:[2]和[11]、[3]和[10]、[5]和[8]等组合型。
2 数牌听牌牌型的计算机分析处理
计算机分析处理问题时,关系到数据结构的知识。在此便是麻将在计算机中的存储形式,分两类:一是便于程序处理的具体代表单张麻将的符号,如用Mi(