手牌中的「對子」取出後,將「連牌」和「同牌」方進入乙個list裡面,並通過m選n的組合方式將可能出現的種類選擇出來:
public
static list kindstotype(int cbcardindex, int numberinhand, listfrontage, listtagkinditem_list)}}
int startcard1 = new
int[startcard.count]; //為了由於在比較過程中會改變手牌的值,所以將初始手牌轉殖乙個副本,用副本進行比較
int indexnew = 0;
foreach (int ing in comnbinelist)}}
int clonearray = new
int[newcard.count]; //把list轉化為陣列
for (int i = 0; i < clonearray.length; i++)
int clonearray1 = (int)clonearray.clone(); //比較依舊是通過轉殖出來的副本進行比較,改變副本的值
for (int i = 0; i < startcard1.length; i++)
for (int z = 0; z < startcard1.length; z++) //將初始手牌的副本與乙個組合後的牌的副本進行比較,如果有相同的,就把他們這個相同的值都歸零}}
bool isitm1 = true;
for (int i = 0; i < startcard1.length; i++)
}bool isitm = false;
for (int i = 0; i < clonearray.length; i++)
}if (newcard.count == clonearray1.length && isitm && isitm1) //如果初始手牌的副本與乙個組合後的牌的副本沒有不等於零的,且數目相同,就說明選出來的組合和手牌一致。是一種正確的組合方式
else
}return userkinds;
}
list是引用型別,如果在下面改變原來的值,會改變本身的值,因此需要在每一次進行判斷前建立乙個副本代替他去執行比較操作。 麻將胡牌演算法
majiang algorithm是帶多張鬼牌的通用胡牌演算法,採用查表方式,簡單高效。在生成表的階段,時間是不值錢的,所以生成方法我們可以任意窮舉。首先分為普通 風 箭三張表。窮舉出所有的key,比如普通表,就是000000000 444420000,因為每一種牌最大4張,且總和不超過14張牌。對...
麻將胡牌演算法 C
這裡只介紹普通的麻將胡牌演算法,也就是7個對子或者 1個對子 3 n n 三個順子或者三個一樣的 其中字牌 東南西北中發白 不能算順子。首先對於每張牌 它有牌的的數字 1 9,牌的種類 萬條筒以及字 所以先封裝乙個牌的包裝類。如果要和伺服器互動的話就應該給這個類序列化 即加上system.seria...
麻將無賴子胡牌演算法
include typedef unsigned char uchar typedef unsigned short ushort define max count 14 define wik null 0 define wik chi hu 0x40 uchar analysedeletepair...