diff --git a/modules/entertainment/configure.go b/modules/entertainment/configure.go index 950a9d559..c3e06537c 100644 --- a/modules/entertainment/configure.go +++ b/modules/entertainment/configure.go @@ -251,3 +251,24 @@ func (this *configureComp) GetGameBlockByKey(key int32) (conf *cfg.GameBlockData err = comm.NewNotFoundConfErr(moduleName, game_block, key) return } + +// 通过权重获取一个普通元素 +func (this *configureComp) GetGameNormalElem() (rd int32) { + var ( + v interface{} + szWeight []int32 + err error + ) + if v, err = this.GetConfigure(game_block); err == nil { + if configure, ok := v.(*cfg.GameBlock); ok { + for _, v := range configure.GetDataList() { + if v.Key > 6 { + break + } + szWeight = append(szWeight, v.Weight) + } + } + } + rd = comm.GetRandW(szWeight) + 1 + return +} diff --git a/modules/entertainment/room.go b/modules/entertainment/room.go index 737819f15..446643c55 100644 --- a/modules/entertainment/room.go +++ b/modules/entertainment/room.go @@ -55,7 +55,7 @@ func (this *Room) RandomPlayType() (itype int32) { weight = append(weight, v.Weight) } itype = list[comm.GetRandW(weight)].Key - //itype = 4 + itype = 3 return } @@ -146,17 +146,17 @@ func (this *Room) AiOperator() { this.player2.Energy += v.CurEnergy v.CurEnergy = this.player2.Energy } - for _, v := range szMap { // - fmt.Printf("================\n") - var v1 int - for index := Width - 1; index >= 0; index-- { - for j := 0; j < Height; j++ { - v1 = index + j*7 - fmt.Printf("%d:%d ", v.Data[v1].Oid, v.Data[v1].Cid) - } - fmt.Printf("\n") - } - } + // for _, v := range szMap { // + // fmt.Printf("================\n") + // var v1 int + // for index := Width - 1; index >= 0; index-- { + // for j := 0; j < Height; j++ { + // v1 = index + j*7 + // fmt.Printf("%d:%d ", v1, v.Data[v1].Cid) + // } + // fmt.Printf("\n") + // } + // } // 广播消息 if err := this.module.SendMsgSyncToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{ Mpadata: szMap, @@ -392,17 +392,17 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr this.round++ } - for _, v := range szMap { // - fmt.Printf("================\n") - var v1 int - for index := Width - 1; index >= 0; index-- { - for j := 0; j < Height; j++ { - v1 = index + j*7 - fmt.Printf("%d:%d ", v.Data[v1].Oid, v.Data[v1].Cid) - } - fmt.Printf("\n") - } - } + // for _, v := range szMap { // + // fmt.Printf("================\n") + // var v1 int + // for index := Width - 1; index >= 0; index-- { + // for j := 0; j < Height; j++ { + // v1 = index + j*7 + // fmt.Printf("%d:%d ", v1, v.Data[v1].Cid) + // } + // fmt.Printf("\n") + // } + // } // 广播消息 if err := this.module.SendMsgSyncToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{ Mpadata: szMap, diff --git a/modules/entertainment/xxlPlat.go b/modules/entertainment/xxlPlat.go index 8cedd2224..a13bc0428 100644 --- a/modules/entertainment/xxlPlat.go +++ b/modules/entertainment/xxlPlat.go @@ -45,9 +45,7 @@ type MapData struct { // 1~6随机一个数 func (this *MapData) GetRandType() int32 { - - n, _ := rand.Int(rand.Reader, big.NewInt(6)) - return int32(n.Int64() + 1) + return this.module.configure.GetGameNormalElem() // 权重随机 } // 玩法带入 @@ -80,6 +78,39 @@ func (this *MapData) CreateGride(count int) (girdes []*pb.GirdeData) { return } +// 生成自定义地图 +func (this *MapData) SetMap() { + sz2 := []int32{ + 3, 1, 2, 2, 1, 3, 1, + 5, 1, 2, 3, 1, 2, 2, + 2, 4, 3, 4, 3, 1, 6, + 1, 3, 3, 4, 2, 3, 6, + 1, 5, 2, 5, 6, 1, 4, + 6, 6, 3, 26, 3, 1, 3, + 3, 3, 1, 3, 3, 2, 5, + } + var pos int + for index := Width - 1; index >= 0; index-- { + for j := 0; j < Height; j++ { + Color := sz2[pos] + Cid := sz2[pos] + if sz2[pos] > 6 { // 特殊元素 + conf, err := this.module.configure.GetGameBlockByKey(sz2[pos]) + if err == nil { + Color = conf.Color + Cid = conf.Key + this.Plat[index+j*Height].Special = conf.Type + } + } + this.Plat[index+j*Height].Color = Color + this.Plat[index+j*Height].Cid = Cid + pos++ + } + } + this.CheckAndRefreshPlat() + // this.SetIndelibilityPlat() +} + // 初始化地图数据 func (this *MapData) InitMap(module *Entertainment, iType int32) { this.module = module @@ -136,6 +167,7 @@ func (this *MapData) CheckSpecialElemChange(oldId, newId int32, color int32) (bS this.Plat[oldId] = tmp this.operElem = append(this.operElem, newId) this.operElem = append(this.operElem, oldId) + x = this.SpecialElem(int(oldId), this.Plat[oldId].Special) xc := this.SpecialElem(int(newId), this.Plat[newId].Special) for k := range xc { @@ -1137,6 +1169,9 @@ func (this *MapData) GetFireBoom(pos int, itype int32) (elem []int) { // 特殊类型元素 统一处理 func (this *MapData) SpecialElem(id int, s int32) (x map[int]struct{}) { + if s <= 0 { + return + } x = make(map[int]struct{}) if s == FourUType { // 4消上下类型 @@ -1155,6 +1190,7 @@ func (this *MapData) SpecialElem(id int, s int32) (x map[int]struct{}) { x[v] = struct{}{} } } + } else if s == BoomType { // 炸弹类型 带走周围一圈+ 上下左右 for _, key := range this.GetBoomElem(id) { x[key] = struct{}{} @@ -1164,7 +1200,8 @@ func (this *MapData) SpecialElem(id int, s int32) (x map[int]struct{}) { x[key] = struct{}{} } } - + this.Plat[id].Special = 0 + x[id] = struct{}{} for k := range x { if k == id { continue