cardcommon.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package gamelogic
  2. import (
  3. "fmt"
  4. "runtime/debug"
  5. "bet24.com/log"
  6. )
  7. const (
  8. CardType_Diamond = iota
  9. CardType_Club
  10. CardType_Heart
  11. CardType_Spade
  12. CardType_Invalid
  13. )
  14. const (
  15. CardValueJ = iota
  16. CardValueQ
  17. CardValueK
  18. CardValueA
  19. )
  20. const (
  21. CARD_COUNT = 16 // 牌数量
  22. HOLD_CARD_COUNT = 4 // 手牌数量
  23. )
  24. var type_desc = []string{"♦", "♣", "♥", "♠", ""}
  25. var value_desc = []string{"J", "Q", "K", "A"}
  26. func isValidCard(card int) bool {
  27. return card >= 0 && card < CARD_COUNT
  28. }
  29. func getCardHex(card int) string {
  30. if !isValidCard(card) {
  31. return "n/a"
  32. }
  33. return fmt.Sprintf("%s%s", type_desc[getCardType(card)], value_desc[getCardValue(card)])
  34. }
  35. func getCardsHex(cards []int) string {
  36. ret := "["
  37. for _, v := range cards {
  38. ret += getCardHex(v)
  39. ret += " "
  40. }
  41. ret += "]"
  42. return ret
  43. }
  44. func getCardType(card int) int {
  45. if !isValidCard(card) {
  46. log.Debug("%s", debug.Stack())
  47. return CardType_Invalid
  48. }
  49. return card / 4
  50. }
  51. func getCardValue(card int) int {
  52. if !isValidCard(card) {
  53. log.Debug("%s", debug.Stack())
  54. return -1
  55. }
  56. return card % 4
  57. }