| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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
- }
|