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