odds.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package common
  2. import (
  3. "fmt"
  4. "bet24.com/log"
  5. )
  6. /*
  7. 方块 梅花 红心 黑桃
  8. Diamond
  9. Club
  10. Heart
  11. Spade
  12. */
  13. type BidType int
  14. const (
  15. BidType_Diamond BidType = iota
  16. BidType_Club
  17. BidType_Heart
  18. BidType_Spade
  19. BidType_Max
  20. )
  21. var bidTypeNames = []string{"D", "C", "H", "S"}
  22. type AreaHandCards int
  23. const (
  24. Area_Diamond AreaHandCards = iota
  25. Area_Club
  26. Area_Heart
  27. Area_Spade
  28. Area_Banker
  29. Area_Max
  30. )
  31. type CardProject int
  32. const (
  33. Project_Base CardProject = iota //基础 2倍
  34. Project_Sira //三张同花顺 3倍
  35. Project_Baloot //有主花色的K和Q 4倍
  36. Project_Fifty //四张的同花顺 5倍
  37. Project_Hundred //炸弹 6倍
  38. Project_StraightFlush //5张同花顺 7倍
  39. )
  40. var projectMultiple = map[CardProject]float64{
  41. Project_Base: 1,
  42. Project_Sira: 2,
  43. Project_Baloot: 3,
  44. Project_Fifty: 4,
  45. Project_Hundred: 5,
  46. Project_StraightFlush: 6,
  47. }
  48. var project_desc = []string{"Base", "Sira", "Baloot", "Fifty", "Hundred", "StraightFlush"}
  49. var project_abbreviation = []string{"B", "S", "Bt", "F", "H", "SF"}
  50. // 刷新项目倍率
  51. func ResetProjectMultiple(multiple []float64) {
  52. for i, o := range multiple {
  53. p := CardProject(i)
  54. if p < Project_Base || p > Project_StraightFlush {
  55. continue // Invalid project index, skip
  56. }
  57. if projectMultiple[p] != o {
  58. projectMultiple[p] = o
  59. }
  60. }
  61. }
  62. func GetMultiple(project CardProject) (multiple float64) {
  63. multiple = projectMultiple[project]
  64. return
  65. }
  66. func GetProjectDesc(project CardProject, isHtml bool) string {
  67. if isHtml {
  68. return project_abbreviation[project]
  69. }
  70. return project_desc[project]
  71. }
  72. func GetBetDesc(betId int) string {
  73. bidType := BidType(betId)
  74. if bidType >= BidType_Max || bidType < BidType_Diamond {
  75. log.Release("common.GetDesc failed %d,%d", bidType, BidType_Max)
  76. return "invalid bet"
  77. }
  78. return bidTypeNames[bidType]
  79. }
  80. func GetResultDesc(bidType, result int) string {
  81. return fmt.Sprintf("%v:%v", bidTypeNames[bidType], result_desc[result])
  82. }
  83. // 生成无效牌牌堆
  84. func GetInvalidHandCards(HandCardCount, CardCount int) HandCards {
  85. var handCards HandCards
  86. count := HandCardCount
  87. ret := make([]int, count)
  88. for i := 0; i < count; i++ {
  89. ret[i] = CardCount
  90. }
  91. handCards.Cards = ret
  92. handCards.Project = Project_Base
  93. return handCards
  94. }