| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- package wildapeslot
- import (
- "encoding/json"
- "os"
- "bet24.com/log"
- )
- type Slot struct {
- SlotID int // 编号
- IsMagic int // 万能牌
- IsBonus bool
- IsFree bool
- Name string // 名字
- Win3 float64 // 3个连线赔率
- Win4 float64 // 4个连线赔率
- Win5 float64 // 5个连线赔率
- }
- //读取配置的时候初始化
- var FREE_ID int
- var BONUS_ID int
- var MAGIC_ID int
- func (s *Slot) isMagic() bool {
- return s.IsMagic > 0
- }
- type SlotManager struct {
- Slots []Slot
- }
- func newSlotManager() *SlotManager {
- log.Color(LogColor, "newSlotManager")
- ret := new(SlotManager)
- ret.loadData()
- return ret
- }
- func (sm *SlotManager) getMagicSlotId() int {
- for _, v := range sm.Slots {
- if v.isMagic() {
- return v.SlotID
- }
- }
- return -1
- }
- func (sm *SlotManager) loadData() {
- data, err := os.ReadFile("slotconf/wildapeslot.json")
- if err != nil {
- log.Error("SlotManager.loadData read wildapeslot.json failed")
- }
- err = json.Unmarshal(data, &sm.Slots)
- if err != nil {
- log.Error("SlotManager.loadData Unmarshal wildapeslot.json failed err:%v", err)
- return
- }
- for _, v := range sm.Slots {
- if v.isMagic() {
- MAGIC_ID = v.SlotID
- } else if v.IsFree {
- FREE_ID = v.SlotID
- } else if v.IsBonus {
- BONUS_ID = v.SlotID
- }
- }
- }
- func (sm *SlotManager) getSlot(slotId int) *Slot {
- for _, v := range sm.Slots {
- if v.SlotID == slotId {
- return &v
- }
- }
- return nil
- }
- func (sm *SlotManager) isMagic(slotId int) bool {
- s := sm.getSlot(slotId)
- if s == nil {
- log.Color(LogColor, "SlotManager.isMagic invlaid SlotId %d", slotId)
- return false
- }
- return s.isMagic()
- }
- func (sm *SlotManager) getBonusCount(slots []int) int {
- count := 0
- for _, v := range slots {
- if sm.getSlot(v).IsBonus {
- count++
- }
- }
- return count
- }
- // 查看5个组合是否中
- // func (sm *SlotManager) getResult(slots []int) (slotId, count int, winMultiple float64) {
- // slotId = -1
- // winMultiple = 0.0
- // count = 0
- // if len(slots) != COLUMN_COUNT {
- // log.Color(LogColor, "SlotManager.getResult invalid len %v", slots)
- // return
- // }
- // for i := 0; i < COLUMN_COUNT; i++ {
- // if sm.isMagic(slots[i]) {
- // count++
- // continue
- // }
- // if slotId == -1 {
- // slotId = slots[i]
- // count++
- // continue
- // }
- // if slots[i] != slotId {
- // break
- // }
- // count++
- // }
- // if slotId == -1 {
- // return
- // }
- // slot := sm.getSlot(slotId)
- // if slot == nil {
- // return
- // }
- // switch count {
- // case 3:
- // winMultiple = slot.Win3
- // case 4:
- // winMultiple = slot.Win4
- // case 5:
- // winMultiple = slot.Win5
- // default:
- // return
- // }
- // return
- // }
- // func (sm *SlotManager) getResults(slots []int) []Result {
- // var ret []Result
- // for r1 := 0; r1 < ROW_COUNT; r1++ {
- // for r2 := 0; r2 < ROW_COUNT; r2++ {
- // for r3 := 0; r3 < ROW_COUNT; r3++ {
- // for r4 := 0; r4 < ROW_COUNT; r4++ {
- // for r5 := 0; r5 < ROW_COUNT; r5++ {
- // slotId, count, winMultiple := sm.getResult([]int{
- // slots[r1*COLUMN_COUNT],
- // slots[r2*COLUMN_COUNT+1],
- // slots[r3*COLUMN_COUNT+2],
- // slots[r4*COLUMN_COUNT+3],
- // slots[r5*COLUMN_COUNT+4],
- // })
- // if winMultiple > 0 {
- // winShape := 0
- // if count == 3 {
- // winShape = (r1+1)*100 + (r2+1)*10 + r3 + 1
- // } else if count == 4 {
- // winShape = (r1+1)*1000 + (r2+1)*100 + (r3+1)*10 + r4 + 1
- // } else if count == 5 {
- // winShape = (r1+1)*10000 + (r2+1)*1000 + (r3+1)*100 + (r4+1)*10 + r5 + 1
- // }
- // ret = append(ret, Result{
- // SlotID: slotId,
- // SlotCount: count,
- // WinShape: winShape,
- // WinRate: winMultiple,
- // })
- // }
- // }
- // }
- // }
- // }
- // }
- // // 去重,把短的去掉
- // if len(ret) == 0 {
- // return ret
- // }
- // sort.Slice(ret, func(i, j int) bool {
- // return ret[i].WinShape < ret[j].WinShape
- // })
- // for i := 0; i < len(ret)-1; {
- // flag := false
- // for j := i + 1; j < len(ret); j++ {
- // if ret[i].WinShape == ret[j].WinShape ||
- // ret[i].WinShape == ret[j].WinShape/10 ||
- // ret[i].WinShape == ret[j].WinShape/100 {
- // flag = true
- // break
- // }
- // }
- // if flag {
- // ret = append(ret[:i], ret[i+1:]...)
- // } else {
- // i++
- // }
- // }
- // return ret
- // }
|