123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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))
- }
|