麻將無賴子胡牌演算法

2021-08-21 17:39:14 字數 1332 閱讀 6436

#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張。首先是列...