1. 比较牌型大小总原则:
(a) 火箭最大,可以打任意其他的牌。
(b) 炸弹比火箭小,比其他牌大。都是炸弹时按牌的分值比大小。
(c) 除火箭和炸弹外,其他牌必须要牌型相同且总张数相同才能比大小。
相同牌型按牌的分值比大小。 依次是 大王 > 小王 >2>A>K>Q>J>10>9>8>7>6>5>4>3 ,不分花色。
顺牌按最大的一张牌的分值来比大小。
飞机带翅膀和四带二按其中的三顺和四张部分来比,带的牌不影响大小。
2. 检测牌能不能出:
checkCards(List<Card> current, List<Card> oppo)
我的出的牌的牌型(myType),对家出的牌型(oppoType)。
如果我的myType为火箭,那一定能出。
如果我的myType为炸弹,oppoType不是炸弹,也不是火箭,那也一定能出。
如果myType不为炸弹(包括火箭),myType 不等于oppoType,那么牌不能出。
如果myType不为炸弹(包括火箭),我出的牌数量 不等于对家出的牌的数量,那么牌不能出。
如果二个人出的牌都为单,对,3张,炸弹,顺子,连队,飞机不带(c1,c2,c3,c4,c123,c1122,c111222),比较current.get(0)的牌值和oppo.get(0)的牌值,如果大,则可以出。
如果二个人出的牌都为3带1,3带2,4带2个单,或者一对,4带2对 ,飞机带单排,飞机带对子(c31,c32,c411,c422,c11122234,c1112223344)。我们分别获取current和oppo所有牌当中重复数次最多的牌,并比较此牌,如果大,则可以出。(如:current: 5556,oppo: 9994,那么重复数次最多的牌分别了5,9,因为小,所以不能出)。
参考资料:
1.斗地主算法的设计与实现(三)--如何比较两手牌的大小
http://blog.csdn.net/fansunion/article/details/12611853