package gamelogic import ( "math/rand" "sort" ) type cardlogic struct { cards []int currentCardIndex int } func newCardLogic() *cardlogic { ret := new(cardlogic) ret.initData() return ret } func (cl *cardlogic) initData() { cl.shuffle() } func (cl *cardlogic) shuffle() { cl.currentCardIndex = 0 cl.cards = make([]int, CARD_COUNT) for d := 0; d < CARD_COUNT; d++ { cl.cards[d] = d } for i := CARD_COUNT - 1; i > 1; i-- { place := rand.Intn(i) tmp := cl.cards[place] cl.cards[place] = cl.cards[i] cl.cards[i] = tmp } } func (cl *cardlogic) getHandCards() []int { ret := make([]int, HOLD_CARD_COUNT) for i := 0; i < HOLD_CARD_COUNT; i++ { ret[i] = cl.getOneCard() } sort.Slice(ret, func(i, j int) bool { return ret[i] < ret[j] }) return ret } func (cl *cardlogic) getOneCard() int { ret := cl.cards[cl.currentCardIndex] cl.currentCardIndex++ return ret }