打出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 輸入很簡單,就是乙個狀態陣列。輸出是手牌型別結構 牌型...