鬥地主含賴子的牌型判斷演算法

2021-10-01 18:50:15 字數 1344 閱讀 4108

打出n張牌(可能含有賴子),需要判斷這n張牌能組成什麼牌型(對子、順子、飛機…)。

整體思路:假設我們已經提前那種牌作為癩子。

1、找出n張牌中的賴子,假設有m個賴子

2、計算出這剩餘n-m張牌的牌值,存到和牌值一一對應的陣列,並記錄對應數量。

3、計算剩餘牌能組成對應牌型所需要的賴子是否滿足需要。

//定義撲克陣列:每張撲克用乙個16進製制數標識,高位標識花色,低位標識牌值;

//撲克資料

const byte m_cbcarddata[54]

=;//賴子牌撲克資料,假設3是癩子

const byte m_cbroguecard[4]

=;//數值掩碼

#define mask_color 0xf0

//花色掩碼

#define mask_value 0x0f

//數值掩碼

//獲取數值

byte getcardvalue

(byte cbcarddata)

//獲取花色

byte getcardcolor

(byte cbcarddata)

//獲取撲克邏輯數值函式

byte getcardlogicvalue

(byte cbcarddata)

//假設現在有出牌資料:byte cbhandcarddata[20]

//1、找出賴子個數

word findroguecard

(byte cbcarddata[20]

)}}return cbroguecardcount;

}//2、處理剩餘出牌資料

//定義陣列:

//byte cbcardindex[20];儲存每種牌值的數量

//處理牌資料,並返回牌數量

word disposecarddata

(word cbcarddata[20]

, byte cbcardindex[20]

)return wcardcount;

}//3、型別判斷 以順子為例

intisstraight

(byte cbcardindex[20]

, word wcardcount, word cbroguecardcount)

//已有賴子數量大於等於需要的的賴子數量 列印具體牌型

if(cbroguecardcount - wneedroguecardcount >=0)

printf

("\n");

}}}return0;

}//4、其他牌型判斷與此類似

鬥地主演算法1判斷牌型

using unityengine using system.collections.generic 牌型 3 4 5 6 7 8 9 10 11 j 12 q 13 k 14 a 15 2 16 小王 17 大王 public class ddz cardtype 是否是單張 public sta...

地主演算法之判斷牌型

地主演算法之判斷牌型 每個遊戲都有屬於自己的規則,當然地主也不例外,常鬥地主的朋友可能知道在鬥地主裡面一共有13種牌型,你所出的牌必須符合13種的一種才能夠出得了牌,這個就叫地主的規則。那麼我們下面可以通過乙個列舉結構來表示每一種的牌型,在這裡我們把錯誤的牌型也當成是一種牌型。enum card t...

鬥地主AI演算法 第六章 牌型判斷

本章實現了上一章提到的檢查當前是否只是一手牌函式ins surcardstype 檢查剩餘的牌是否只是一手牌 是 返回手牌型別資料 不是 返回錯誤型別 cgerror cardgroupdata ins surcardstype int arr 輸入很簡單,就是乙個狀態陣列。輸出是手牌型別結構 牌型...