package algorithm func (c *Cards) Counter() *ValueCounter { var counter ValueCounter counter.Set(*c) return &counter } func (c *Cards) GetType() uint32 { numCards := len(*c) if numCards == 0 { return 0 } cards := *c counter := c.Counter() ASort(cards, 0, int8(numCards)-1, counter) checks := []func() uint32{ c.royalFlush, c.straightFlush, func() uint32 { return c.four(counter) }, func() uint32 { return c.fullFouse(counter) }, c.flush, c.straight, func() uint32 { return c.three(counter) }, c.twoPair, c.onePair, } for _, check := range checks { if res := check(); res != 0 { return res } } // 高牌(High Card):如果不符合任何组合,则返回最高牌 //高牌(high card) //既不是同一花色也不是同一点数的五张牌组成。 //平手牌:如果不止一人抓到此牌,则比较点数最大者, //如果点数最大的相同,则比较第二、第三、第四和第五大的,如果所有牌都相同,则平分彩池。 return En(HIGH_CARD, ToValue(cards)) }