1. 程式人生 > >棋牌平臺開發教程之鬥地主常用算法

棋牌平臺開發教程之鬥地主常用算法

源碼 最大的 http 大王 等待時間 細節 第一個 參考 更多

首先,要弄清楚鬥地主的牌型有哪些。可以參考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

棋牌平臺開發教程之鬥地主常用算法