棋牌平臺開發教程之鬥地主常用算法
首先,要弄清楚鬥地主的牌型有哪些。可以參考QQ遊戲給出的介紹,如下:
火箭:即雙王(大王和小王),最大的牌。
炸彈:四張同數值牌(如四個 7 )。
單牌:單個牌(如紅桃 5 )。
對牌:數值相同的兩張牌(如梅花 4+ 方塊 4 )。
三張牌:數值相同的三張牌(如三個 J )。
三帶一:數值相同的三張牌 + 一張單牌或一對牌。例如: 333+6 或 444+99
單順:五張或更多的連續單牌(如: 45678 或 78910JQK )。不包括 2 點和雙王。
雙順:三對或更多的連續對牌(如: 334455 、 7788991010JJ )。不包括 2 點和雙王。
三順:二個或更多的連續三張牌(如: 333444 、 555666777888 )。不包括 2 點和雙王。
飛機帶翅膀:三順+同數量的單牌(或同數量的對牌)。
如: 444555+79 或 333444555+7799JJ
四帶二:四張牌+兩手牌。(註意:四帶二不是炸彈)。
如: 5555 + 3 + 8 或 4444 + 55 + 77 。
其次,設計CRobot類。
屬性包括:原始牌(數) ,當前牌(數) ,前一輪出牌(數) ,當前出牌(數) ,當前分數 ,是否Pass ,等待時間。
方法包括:獲得原始牌(數),牌面類型函數 ,排序函數 ,按牌面類型排序函數,出牌函數。
最後,分牌算法。怎樣模擬人工洗牌,這是一個難題。不過這難不倒我。
先將54張牌分成6 * 9的矩陣。
(1) 交換相鄰的兩行,1和2,3和4,5和6 交換。
(2) 交換相鄰的兩列,1和2,3和4,5和6,7和8 交換。
(3) 隨即選擇兩行兩列進行交換。
以上步驟重復50~100次。然後依次取第一個17張為玩家1的牌,第二個17張為玩家2的牌,第三個17張為玩家3的牌,剩余的3張為底 牌。OK!
具體的細節可以去這裏棋牌源碼架設 www.yasewl.com
棋牌平臺開發教程之鬥地主常用算法