資源描述:
《麻將游戲軟件的聽(tīng)牌牌型分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、麻將游戲軟件的聽(tīng)牌牌型分析:麻將游戲軟件的開(kāi)發(fā),就其內(nèi)核部分,大致可以分為自動(dòng)發(fā)牌、自動(dòng)智能出牌、吃碰杠的處理、聽(tīng)牌判斷、胡牌判斷、基于不同麻將玩法規(guī)則的番數(shù)計(jì)算等幾大部分。其中以自動(dòng)智能出牌、聽(tīng)牌判斷、胡牌判斷等處理最為復(fù)雜。這里主要介紹聽(tīng)牌牌型的算法設(shè)計(jì)思想。 關(guān)鍵詞:麻將游戲;聽(tīng)牌牌型;成牌牌型;VB6.0 ?。篢P311:A:1009-3044(2011)11-2602-03 麻將的牌局雖然復(fù)雜且變化無(wú)常,但構(gòu)成手中的13張牌也就只有兩類(lèi):數(shù)牌⑴、字牌⑵。聽(tīng)牌的牌型,也只可能是由此2類(lèi)中的1-2
2、類(lèi)組成,并且,其中一類(lèi)或一部分必須得是成牌牌型,另一類(lèi)或其一部分才能構(gòu)成聽(tīng)牌牌型⑶。如此理解后可知,要分析聽(tīng)牌,首先要分析最基本的單類(lèi)牌的聽(tīng)牌牌型。根據(jù)麻將的胡牌機(jī)理,數(shù)牌與字牌是屬不同的類(lèi)型,它們的聽(tīng)牌牌型分析要分別處理?! ?數(shù)牌的聽(tīng)牌牌型分析 數(shù)牌中雖包括條、筒、萬(wàn)牌,但同屬一類(lèi),對(duì)它們的聽(tīng)牌牌型分析方法是一樣的,下面以條為例來(lái)分析?! ?duì)于條而言,任何一次聽(tīng)牌時(shí),手中條的數(shù)量只可能是:0、1、2、4、5、7、8、10、11、13中的任一數(shù)目,其它數(shù)目的條均不能構(gòu)成聽(tīng)牌牌型。所以對(duì)于條的聽(tīng)牌牌型分析
3、,只限于數(shù)目為1、2、4、5、7、8、10、11、13的分析?! ?)1張牌的聽(tīng)牌牌型:A型,用[1]表示,定為基本聽(tīng)牌牌型。 2)2張牌的聽(tīng)牌牌型:只能是AA⑷、AB、AC型,用[2]表示,定為基本聽(tīng)牌牌型?! ?)4張牌的聽(tīng)牌牌型有:①ABCD、ABCF、AAAB等可分解成左或右三張是成牌牌型,聽(tīng)右或左[1]的,用[3]和[1]的組合表示(其中:[3]表示3張牌是成牌牌型,[1]表示1張牌是聽(tīng)牌牌型,稱(chēng)它是[3]和[1]的組合型);②AABB、AABC、AAAB等可分解成左或右二張是成牌牌型,聽(tīng)右或左
4、[2]的,稱(chēng)它是[2]和[2]的組合型;③ABBC型,不能用成牌牌型+基本聽(tīng)牌牌型[1]、[2]來(lái)分解的,稱(chēng)之為特殊聽(tīng)牌牌型?! ?)5張牌的聽(tīng)牌牌型有:①AAABB、AABCD等[3]和[2]組合型;②ABBBC、ABBCC、AABCC等特殊聽(tīng)牌牌型。 5)7張牌的聽(tīng)牌牌型有:①[2]和[5]、[3]和[4]、[5]和[2]、[6]和[1]的組合型;②AABBBCC等特殊聽(tīng)牌牌型?! ?)8張牌的聽(tīng)牌牌型有:①[6]和[2]、[3]和[5]的組合型;②AABBBCCC等特殊聽(tīng)牌牌型。 7)10張牌的聽(tīng)
5、牌牌型有:[2]和[8]、[3]和[7]、[6]和[4]等組合型?! ?)11張牌的聽(tīng)牌牌型有:[2]和[9]、[3]和[8]、[5]和[6]等組合型?! ?)13張牌的聽(tīng)牌牌型有:[2]和[11]、[3]和[10]、[5]和[8]等組合型?! ?數(shù)牌聽(tīng)牌牌型的計(jì)算機(jī)分析處理 計(jì)算機(jī)分析處理問(wèn)題時(shí),關(guān)系到數(shù)據(jù)結(jié)構(gòu)的知識(shí)。在此便是麻將在計(jì)算機(jī)中的存儲(chǔ)形式,分兩類(lèi):一是便于程序處理的具體代表單張麻將的符號(hào),如用Mi(i=1,2,……,9)代表?xiàng)l1到9;二是便于軟件界面顯示的具體單張麻將圖形。這里只說(shuō)程序的內(nèi)在
6、處理,對(duì)于條,這里采取的是常見(jiàn)的數(shù)組,用CARDm(14)來(lái)存儲(chǔ),其中,前13位存放手中可能有的條牌,第14位用于存放統(tǒng)計(jì)得到的手中條的總張數(shù)。如表1所示?! ?duì)于條數(shù)目為1、2、4、5、7、8、10、11、13的聽(tīng)牌牌型分析,則分別構(gòu)造過(guò)程來(lái)處理。下面以條數(shù)目為2、4處理算法為例來(lái)分析,其它略。開(kāi)發(fā)工具采用VB6.0。 1)兩張牌的聽(tīng)牌牌型分析 PublicSubListen2(card()) x21=Val(Right(card(1),1)):x22=Val(Right(card(2),1))
7、Ifx21=x22Then'AA型的聽(tīng)牌 CallListenCardInsert(Left(card(2),1)+Trim(Str(x21))) EndIf ……'BC型的聽(tīng)牌分析略?! fx22-x21=2Then'AC聽(tīng)B型 CallListenCardInsert(Left(card(2),1)+Trim(Str(x22-1))) EndIf EndSub 2)四張牌的聽(tīng)牌牌型,這里只對(duì)ACCC型分析,其余略。 PublicSubListen4(card()) …… Ifsca
8、rd3(card4133)=1then'后3張牌構(gòu)成成牌牌型,則聽(tīng)第1張牌 CallListenCardInsert(A)'把第1張牌插入存放聽(tīng)牌的數(shù)組 EndIf Ifscard2(card4221)=1then'后2張牌構(gòu)成成牌牌型,則聽(tīng)前2張牌 CallListen2(card4222)'調(diào)用設(shè)計(jì)好聽(tīng)2張牌的過(guò)程Linsten2() Endif …… EndSub 其中:數(shù)組card4133