簡(jiǎn)要分析牌面大小的比較
在本游戲的制作過程中,遇到最大的技術(shù)挑戰(zhàn)就在于牌面大小的比較上,因?yàn)槌绦蚋静徽J(rèn)識(shí)什么是豹子、同花順或?qū)ψ拥扰泼妫虼吮仨毾取敖虝?huì)”程序識(shí)別牌面信息,才能進(jìn)一步比較大小,進(jìn)入判定輸贏。根據(jù)牌面大小的順序:豹子>同花順>同花>順子>對(duì)子>單張,我先讓程序認(rèn)識(shí)豹子,由于豹子具有三張牌點(diǎn)數(shù)相同的特點(diǎn),于是就先用循環(huán)把222 ~?999的數(shù)字加入到“豹子”列表(如下圖),然后繼續(xù)將101010 ~ AAA手動(dòng)加入到“豹子”列表,因?yàn)?99+111不等于101010,所以循環(huán)只到999,從101010開始都是手動(dòng)添加。當(dāng)然也可以手動(dòng)把222、333、444、555、666~ AAA依次添加到列表中。

接下來,豹子大小的判斷就相對(duì)容易實(shí)現(xiàn),雙方若均為豹子,只需要比較雙方數(shù)字的大小即可,如果一方是豹子,而另一方不是,則豹子勝,因?yàn)楸邮亲畲蟮?。但有一種特殊情況,若對(duì)方拿的是最小的單張235,則235贏最大的豹子AAA,這點(diǎn)需特別判斷。

第二大的是同花順,這里涉及到順子,因此要先讓程序識(shí)別花色和順子。順子的特點(diǎn)是三個(gè)數(shù)相連續(xù),根據(jù)此特點(diǎn),從234 ~ 789可以照樣用循環(huán)方式添加到“順子”列表中(當(dāng)然也可手動(dòng)添加),接著再把91011 ~ 1213A手動(dòng)依次添加進(jìn)去,特別注意的是由于A23(或23A)最小,所以它最先添加。之所以要按下圖的順序添加,目的是為了之后的大小比較。

在花色相同的情況下,就得判斷順子的大小,所以判斷順子可以先做,判斷的依據(jù)就是該順子在列表中的順序,序號(hào)大的贏序號(hào)小的,之前要按順序添加“順子”列表的用意就在于此。

花色判斷出來,順子大小也判斷出來,就可以判斷同花順,同時(shí)也可順帶判斷同花,因?yàn)橥樒鋵?shí)就是同花(即花色相同)的一種特殊形式。先判斷雙方是否都為同花,如果是再判斷是不是順子,再根據(jù)順子判斷大小。否則同花的一方勝過非同花的一方

再往下就是對(duì)子和最小的單張。先分析對(duì)子,對(duì)子的特點(diǎn)是其中兩張牌的點(diǎn)數(shù)相同,所以先通過“兩牌數(shù)字”找出點(diǎn)數(shù)相同的兩張牌,并記錄剩余一張牌的點(diǎn)數(shù)大小,接著先直接數(shù)字比較點(diǎn)數(shù)相同的兩張牌的大小,分出勝負(fù)。若大小相等,則比較剩余那張牌的大小,其中A最大,2最小,如此一來即可判斷雙方均為對(duì)子時(shí)的牌面大小。

最后就是單張牌(也就是散牌)的比較,思路也比較簡(jiǎn)單,將三張牌的點(diǎn)數(shù)相加后比較大小即可,其中A為14,其他牌則按牌面點(diǎn)數(shù)計(jì)算。相信大家都可算出235是相加后,點(diǎn)數(shù)最小的單張牌(不是234哦,234可是順子),但是它能贏最大的豹子AAA呢!

這不正是以弱勝強(qiáng),反敗為勝,絕處逢生的注解嗎?呵呵