package poker import "sort" type IPlayPoker interface { // Cmp (p1p2):CppBig Cmp(p1, p2 *Poker) CmpPokerPoint } // SortPokerAsc ε‡εΊζŽ’εˆ— func SortPokerAsc(pp IPlayPoker, handlePokers []*Poker, handlePokers1 ...*Poker) (newPokers []*Poker) { for _, pk := range handlePokers { newPokers = append(newPokers, pk) } for _, pk := range handlePokers1 { newPokers = append(newPokers, pk) } sort.Slice(newPokers, func(i, j int) bool { return pp.Cmp(newPokers[i], newPokers[j]) == CppSmall }) return } //func SortPokerDesc(pp IPlayPoker, handlePokers []*Poker, handlePokers1 ...*Poker) (newPokers []*Poker) { // for _, pk := range handlePokers { // newPokers = append(newPokers, pk) // } // for _, pk := range handlePokers1 { // newPokers = append(newPokers, pk) // } // sort.Slice(newPokers, func(i, j int) bool { // return pp.Cmp(newPokers[i], newPokers[j]) == CppBig // }) // return //} func FindMaxPoker(pp IPlayPoker, handlePokers []*Poker) (pk *Poker, pos int) { if len(handlePokers) == 0 { return } pk = handlePokers[0] for pos1, pk1 := range handlePokers { if pp.Cmp(pk, pk1) == CppSmall { pk = pk1 pos = pos1 } } return } func FindMinPoker(pp IPlayPoker, handlePokers []*Poker) (pk *Poker, pos int) { if len(handlePokers) == 0 { return } pk = handlePokers[0] for pos1, pk1 := range handlePokers { if pp.Cmp(pk, pk1) == CppBig { pk = pk1 pos = pos1 } } return } func FindBiggerPoker(pp IPlayPoker, handlePokers []*Poker, deskPokers ...*Poker) (pk *Poker, pos int) { if len(handlePokers) == 0 { return } if len(deskPokers) == 0 { return FindMinPoker(pp, handlePokers) } deskPk, _ := FindMaxPoker(pp, deskPokers) newPokers := SortPokerAsc(pp, handlePokers) for pos1, pk1 := range newPokers { if pp.Cmp(pk1, deskPk) == CppBig { pk = pk1 pos = pos1 return } } return }