cardlogic.go 909 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package gamelogic
  2. import (
  3. "math/rand"
  4. "sort"
  5. )
  6. type cardlogic struct {
  7. cards []int
  8. currentCardIndex int
  9. }
  10. func newCardLogic() *cardlogic {
  11. ret := new(cardlogic)
  12. ret.initData()
  13. return ret
  14. }
  15. func (cl *cardlogic) initData() {
  16. cl.shuffle()
  17. }
  18. func (cl *cardlogic) shuffle() {
  19. cl.currentCardIndex = 0
  20. cl.cards = make([]int, CARD_COUNT)
  21. for d := 0; d < CARD_COUNT; d++ {
  22. cl.cards[d] = d
  23. }
  24. for i := CARD_COUNT - 1; i > 1; i-- {
  25. place := rand.Intn(i)
  26. tmp := cl.cards[place]
  27. cl.cards[place] = cl.cards[i]
  28. cl.cards[i] = tmp
  29. }
  30. }
  31. func (cl *cardlogic) getHandCards() []int {
  32. ret := make([]int, HOLD_CARD_COUNT)
  33. for i := 0; i < HOLD_CARD_COUNT; i++ {
  34. ret[i] = cl.getOneCard()
  35. }
  36. sort.Slice(ret, func(i, j int) bool {
  37. return ret[i] < ret[j]
  38. })
  39. return ret
  40. }
  41. func (cl *cardlogic) getOneCard() int {
  42. ret := cl.cards[cl.currentCardIndex]
  43. cl.currentCardIndex++
  44. return ret
  45. }