#include
typedef unsigned char uchar;
typedef unsigned short ushort;
#define max_count 14
#define wik_null 0
#define wik_chi_hu 0x40
uchar analysedeletepair(const uchar cbcarddata[max_count], const uchar & cbcardcount);
//同種花色牌值總和
int levelvalue = 0;
//花色界限
int level = 0x11;
//同種花色之和是否為3的倍數
bool checkcolorvalue = true;
for (uchar i = 0; i < cbcardcount; i++)
levelvalue = 0;
while (level <= levelvalue)
}levelvalue += cbcarddata[i];}}
checkcolorvalue = (levelvalue % 3 == 0);
if (!checkcolorvalue)
if (checkcolorvalue)
if (arr[cbcarddata[i]]>0)
else}}
}return true;
}ushort analysechihucardbyting(const uchar cbcarddata[max_count], const uchar& cbcardcount)
//不能存在花牌
if (cbcarddata[cbcardcount - 1] >= 0x38)
return wik_null;
//是否平胡
bool ispinghu = false;
//是否小七對
bool isxiaoqidui = (cbcardcount == max_count);
//七對牌型分析
if (isxiaoqidui)}}
//如果是小七對,則不分析平胡,否則分析平胡累型
if (!isxiaoqidui)
//跳過重複的將對,檢測下一對能否滿足胡牌條件
for (uchar next = index; next < cbcardcount - 1; next++)
else}}
}}//特殊牌型在此新增
return (isxiaoqidui || ispinghu) ? wik_chi_hu : wik_null;
}
麻將胡牌演算法
majiang algorithm是帶多張鬼牌的通用胡牌演算法,採用查表方式,簡單高效。在生成表的階段,時間是不值錢的,所以生成方法我們可以任意窮舉。首先分為普通 風 箭三張表。窮舉出所有的key,比如普通表,就是000000000 444420000,因為每一種牌最大4張,且總和不超過14張牌。對...
麻將胡牌演算法 C
這裡只介紹普通的麻將胡牌演算法,也就是7個對子或者 1個對子 3 n n 三個順子或者三個一樣的 其中字牌 東南西北中發白 不能算順子。首先對於每張牌 它有牌的的數字 1 9,牌的種類 萬條筒以及字 所以先封裝乙個牌的包裝類。如果要和伺服器互動的話就應該給這個類序列化 即加上system.seria...
麻將胡牌判決
胡牌有以下幾種情況 1 乙個對子 4組 3個相同的牌或者順子。只有m s p是可以構成順子的。東西南北這樣的牌沒有順子。2 7個不同的對子。3 1m,9m,1p,9p,1s,9s,1c,2c,3c,4c,5c,6c,7c.這13種牌每種都有,而且僅有這13種牌。肯定是有一種2張。其他的1張。首先是列...