欢迎来到天天文库
浏览记录
ID:19657151
大小:62.50 KB
页数:9页
时间:2018-10-04
《麻将游戏软件的听牌牌型分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、麻将游戏软件的听牌牌型分析:麻将游戏软件的开发,就其内核部分,大致可以分为自动发牌、自动智能出牌、吃碰杠的处理、听牌判断、胡牌判断、基于不同麻将玩法规则的番数计算等几大部分。其中以自动智能出牌、听牌判断、胡牌判断等处理最为复杂。这里主要介绍听牌牌型的算法设计思想。 关键词:麻将游戏;听牌牌型;成牌牌型;VB6.0 :TP311:A:1009-3044(2011)11-2602-03 麻将的牌局虽然复杂且变化无常,但构成手中的13张牌也就只有两类:数牌⑴、字牌⑵。听牌的牌型,也只可能是由此2类中的1-2
2、类组成,并且,其中一类或一部分必须得是成牌牌型,另一类或其一部分才能构成听牌牌型⑶。如此理解后可知,要分析听牌,首先要分析最基本的单类牌的听牌牌型。根据麻将的胡牌机理,数牌与字牌是属不同的类型,它们的听牌牌型分析要分别处理。 1数牌的听牌牌型分析 数牌中虽包括条、筒、万牌,但同属一类,对它们的听牌牌型分析方法是一样的,下面以条为例来分析。 对于条而言,任何一次听牌时,手中条的数量只可能是:0、1、2、4、5、7、8、10、11、13中的任一数目,其它数目的条均不能构成听牌牌型。所以对于条的听牌牌型分析
3、,只限于数目为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张牌是听牌牌型,称它是[3]和[1]的组合型);②AABB、AABC、AAAB等可分解成左或右二张是成牌牌型,听右或左
4、[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张牌的听
5、牌牌型有:[2]和[8]、[3]和[7]、[6]和[4]等组合型。 8)11张牌的听牌牌型有:[2]和[9]、[3]和[8]、[5]和[6]等组合型。 9)13张牌的听牌牌型有:[2]和[11]、[3]和[10]、[5]和[8]等组合型。 2数牌听牌牌型的计算机分析处理 计算机分析处理问题时,关系到数据结构的知识。在此便是麻将在计算机中的存储形式,分两类:一是便于程序处理的具体代表单张麻将的符号,如用Mi(i=1,2,……,9)代表条1到9;二是便于软件界面显示的具体单张麻将图形。这里只说程序的内在
6、处理,对于条,这里采取的是常见的数组,用CARDm(14)来存储,其中,前13位存放手中可能有的条牌,第14位用于存放统计得到的手中条的总张数。如表1所示。 对于条数目为1、2、4、5、7、8、10、11、13的听牌牌型分析,则分别构造过程来处理。下面以条数目为2、4处理算法为例来分析,其它略。开发工具采用VB6.0。 1)两张牌的听牌牌型分析 PublicSubListen2(card()) x21=Val(Right(card(1),1)):x22=Val(Right(card(2),1))
7、Ifx21=x22Then'AA型的听牌 CallListenCardInsert(Left(card(2),1)+Trim(Str(x21))) EndIf ……'BC型的听牌分析略。 Ifx22-x21=2Then'AC听B型 CallListenCardInsert(Left(card(2),1)+Trim(Str(x22-1))) EndIf EndSub 2)四张牌的听牌牌型,这里只对ACCC型分析,其余略。 PublicSubListen4(card()) …… Ifsca
8、rd3(card4133)=1then'后3张牌构成成牌牌型,则听第1张牌 CallListenCardInsert(A)'把第1张牌插入存放听牌的数组 EndIf Ifscard2(card4221)=1then'后2张牌构成成牌牌型,则听前2张牌 CallListen2(card4222)'调用设计好听2张牌的过程Linsten2() Endif …… EndSub 其中:数组card4133
此文档下载收益归作者所有