This commit is contained in:
liwei1dao 2023-10-20 18:28:49 +08:00
commit 4139e2e36c
8 changed files with 253 additions and 130 deletions

View File

@ -823,7 +823,7 @@
"HeroCount": 5, "HeroCount": 5,
"readyScene": "scenesfight_role_interface_02", "readyScene": "scenesfight_role_interface_02",
"battleScenes": [ "battleScenes": [
"bossfight_spinymandrilla_03" "bossfight_spinymandrilla_02"
], ],
"BGMusic": "", "BGMusic": "",
"LoadingId": 0, "LoadingId": 0,

View File

@ -776,7 +776,7 @@
"n": 0 "n": 0
}, },
"fight_ps": 3, "fight_ps": 3,
"player_bodychange": 20010, "player_bodychange": 0,
"mryl_reward": [ "mryl_reward": [
{ {
"a": "attr", "a": "attr",

View File

@ -4411,7 +4411,7 @@
"OverlayTimes": 0, "OverlayTimes": 0,
"SameID": false, "SameID": false,
"golbalbufficon": "", "golbalbufficon": "",
"buffIcon": "ty_zd_buff_z006", "buffIcon": "",
"buffeffect": "", "buffeffect": "",
"buffpos": "根节点", "buffpos": "根节点",
"forbidFloat": 0 "forbidFloat": 0

View File

@ -1,27 +1,74 @@
package entertainment package entertainment
import ( import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
) )
const ( const (
dragon_trainlv = "game_trainlv.json" game_block = "game_block.json"
dragon_play = "game_dragonplay.json"
game_buzkashimount = "game_buzkashimount.json"
game_dragonlvitem = "game_dragonlvitem.json"
) )
// /配置管理组件 // /配置管理组件
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
module *Entertainment module *Entertainment
lock sync.RWMutex
block map[int32]*cfg.GameBlockData
} }
// 组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options) err = this.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Entertainment) this.module = module.(*Entertainment)
err = this.LoadMultiConfigure(map[string]interface{}{
game_block: cfg.NewGameBlock,
})
configure.RegisterConfigure(game_block, cfg.NewGameBlock, this.LoadGameBlock)
return
}
func (this *configureComp) LoadGameBlock() {
var (
v interface{}
configure *cfg.GameBlock
err error
ok bool
)
if v, err = this.GetConfigure(game_block); err != nil {
this.module.Errorln(err)
return
}
block := make(map[int32]*cfg.GameBlockData)
if configure, ok = v.(*cfg.GameBlock); ok {
for _, v := range configure.GetDataList() {
key := v.Color<<8 + v.Type
block[key] = v
}
}
this.lock.Lock()
this.block = block
this.lock.Unlock()
return
}
func (this *configureComp) GetGameBlock(color int32, iType int32) (conf *cfg.GameBlockData, err error) {
var (
ok bool
key int32
)
key = color<<8 + iType
this.lock.RLock()
defer this.lock.RUnlock()
if conf, ok = this.block[key]; !ok {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_block, fmt.Sprintf("color:%d,itype:%d", color, key))
}
return return
} }

View File

@ -14,7 +14,8 @@ import (
const ( const (
MaxPs = 2 // 最大体力 MaxPs = 2 // 最大体力
MaxRound = 7 // 最大回合数 MaxRound = 7 // 最大回合数
MaxTime = 180 // 游戏操作时间 MaxTime = 1800 // 游戏操作时间
AITime = 4 // AI延迟操作时间操作时间 随机+-3
) )
//游戏房间 //游戏房间
@ -54,7 +55,7 @@ func (this *Room) operateTimeOut(task *timewheel.Task, args ...interface{}) {
Data: this.chessboard.Plat, Data: this.chessboard.Plat,
}) })
//this.module.Debugf("超时%d", configure.Now().Unix()) //this.module.Debugf("超时%d", configure.Now().Unix())
if err := this.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{ if err := this.module.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{
Mpadata: szMap, Mpadata: szMap,
Power: this.power, Power: this.power,
Score: 0, Score: 0,
@ -68,7 +69,7 @@ func (this *Room) operateTimeOut(task *timewheel.Task, args ...interface{}) {
func (this *Room) InitRoom(module *Entertainment, s1 comm.IUserSession, s2 comm.IUserSession, p1 *pb.PlayerData, p2 *pb.PlayerData) *Room { func (this *Room) InitRoom(module *Entertainment, s1 comm.IUserSession, s2 comm.IUserSession, p1 *pb.PlayerData, p2 *pb.PlayerData) *Room {
this.chessboard = new(MapData) this.chessboard = new(MapData)
this.chessboard.InitMap() // 初始化棋盘 this.chessboard.InitMap(module) // 初始化棋盘
this.szSession = append(this.szSession, s1.Clone()) this.szSession = append(this.szSession, s1.Clone())
if p2.Uid != "999" { // 是否是机器人 if p2.Uid != "999" { // 是否是机器人
@ -103,6 +104,7 @@ func (this *Room) AiTimeOut(task *timewheel.Task, args ...interface{}) {
if this.aiTimer != nil { if this.aiTimer != nil {
timewheel.Remove(this.aiTimer) timewheel.Remove(this.aiTimer)
} }
// 交换元素 // 交换元素
bSwap := this.chessboard.AiSwapGirde() // 交换格子 bSwap := this.chessboard.AiSwapGirde() // 交换格子
if !bSwap { if !bSwap {
@ -123,7 +125,7 @@ func (this *Room) AiTimeOut(task *timewheel.Task, args ...interface{}) {
} }
this.operatetimer = timewheel.Add(time.Second*MaxTime, this.operateTimeOut) // 开启新的定时器 this.operatetimer = timewheel.Add(time.Second*MaxTime, this.operateTimeOut) // 开启新的定时器
// 广播消息 // 广播消息
if err := this.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{ if err := this.module.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{
Mpadata: szMap, Mpadata: szMap,
Power: this.power, Power: this.power,
Score: curScore, Score: curScore,
@ -177,7 +179,7 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr
if this.aiTimer != nil { if this.aiTimer != nil {
timewheel.Remove(this.aiTimer) timewheel.Remove(this.aiTimer)
} }
this.aiTimer = timewheel.Add(time.Second*MaxTime, this.AiTimeOut) this.aiTimer = timewheel.Add(time.Second*AITime, this.AiTimeOut)
} }
this.round++ this.round++
} }
@ -195,7 +197,7 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr
} }
// 广播消息 // 广播消息
if err := this.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{ if err := this.module.SendMsgToSession(string(this.module.GetType()), "operatorrst", &pb.EntertainOperatorRstPush{
Mpadata: szMap, Mpadata: szMap,
Power: this.power, Power: this.power,
Score: curScore, Score: curScore,
@ -206,11 +208,24 @@ func (this *Room) ReceiveMessage(session comm.IUserSession, stype string, msg pr
this.Errorln(err) this.Errorln(err)
} }
case "ready": case "ready":
this.StartGame() if len(this.szSession) == 1 { // AI对战的话直接开始游戏
if err := this.module.SendMsgToSession(string(this.module.GetType()), "startgame", &pb.EntertainStartGamePush{
User1: this.player1,
User2: this.player2,
Mpadata: &pb.MapData{
Data: this.chessboard.Plat,
},
Power: this.power,
Round: this.round,
}, session); err != nil {
this.Errorln(err)
}
this.operatetimer = timewheel.Add(time.Second*MaxTime, this.operateTimeOut) this.operatetimer = timewheel.Add(time.Second*MaxTime, this.operateTimeOut)
} }
}
return return
} }
@ -224,7 +239,7 @@ func (this *Room) Opertor(uid string, iType int32, old int32, new int32) (errdat
func (this *Room) StartGame() (errdata *pb.ErrorData) { func (this *Room) StartGame() (errdata *pb.ErrorData) {
if err := this.SendMsgToSession(string(this.module.GetType()), "startgame", &pb.EntertainStartGamePush{ if err := this.module.SendMsgToSession(string(this.module.GetType()), "startgame", &pb.EntertainStartGamePush{
User1: this.player1, User1: this.player1,
User2: this.player2, User2: this.player2,
Mpadata: &pb.MapData{ Mpadata: &pb.MapData{
@ -246,7 +261,7 @@ func (this *Room) GameOver() (errdata *pb.ErrorData) {
if this.operatetimer != nil { if this.operatetimer != nil {
timewheel.Remove(this.operatetimer) timewheel.Remove(this.operatetimer)
} }
this.SendMsgToSession(string(this.module.GetType()), "gameover", &pb.EntertainGameOverPush{ this.module.SendMsgToSession(string(this.module.GetType()), "gameover", &pb.EntertainGameOverPush{
User1: this.player1, User1: this.player1,
User2: this.player2, User2: this.player2,
Mpadata: &pb.MapData{ Mpadata: &pb.MapData{

View File

@ -3,7 +3,6 @@ package entertainment
import ( import (
"crypto/rand" "crypto/rand"
"fmt" "fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"math/big" "math/big"
) )
@ -12,6 +11,10 @@ const (
Width = 7 Width = 7
Height = 7 Height = 7
Total = Width * Height Total = Width * Height
FiveType = 3 // 5消类型
FourUType = 1 // 4消上下类型
FourLType = 2 // 4消左右类型
) )
// type Girde struct { // type Girde struct {
@ -31,17 +34,9 @@ type Girde struct {
//地图数据 //地图数据
type MapData struct { type MapData struct {
//Data map[int32]*pb.GirdeData // 地图数据
Plat []*pb.GirdeData // 地图 Plat []*pb.GirdeData // 地图
oid int32 // 唯一id oid int32 // 唯一id
} module *Entertainment
func (this *MapData) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
// this.Data = make(map[int32]*pb.GirdeData, Width*Height)
this.Plat = make([]*pb.GirdeData, Width*Height)
return
} }
// 1~6随机一个数 // 1~6随机一个数
@ -59,20 +54,19 @@ func (this *MapData) CreateGride(index int32) *pb.GirdeData {
Color: t, Color: t,
Cid: GetRandType(), Cid: GetRandType(),
Score: 1, Score: 1,
Special: 1, Special: 0,
} }
} }
// 初始化地图数据 // 初始化地图数据
func (this *MapData) InitMap() { func (this *MapData) InitMap(module *Entertainment) {
this.module = module
this.oid = 1000 // 方便观察 从1000开始 this.oid = 1000 // 方便观察 从1000开始
this.Plat = make([]*pb.GirdeData, Width*Height) this.Plat = make([]*pb.GirdeData, Width*Height)
for i := 0; i < Width*Height; i++ { for i := 0; i < Width*Height; i++ {
this.Plat[i] = this.CreateGride(int32(i))
this.Plat[i] = this.CreateGride(int32(i)) //(int32(i/Width), int32(i%Height))
} }
this.SetMap() // 方便测试固定地图
//this.Debugf()
} }
// 交换2个元素(参数 oid ) // 交换2个元素(参数 oid )
@ -91,8 +85,6 @@ func (this *MapData) SwapGirde(oldId, newId int32) bool {
this.Plat[newId] = this.Plat[oldId] this.Plat[newId] = this.Plat[oldId]
this.Plat[oldId] = tmp this.Plat[oldId] = tmp
} }
this.Debugf()
return bSwap return bSwap
} }
@ -111,27 +103,22 @@ func (this *MapData) SetMap() {
for j := 0; j < Height; j++ { for j := 0; j < Height; j++ {
this.Plat[index+j*Height].Color = sz2[pos] this.Plat[index+j*Height].Color = sz2[pos]
pos++ pos++
//fmt.Printf(" x:%d y:%d c:%d ", this.Plat[index+j*7].X, this.Plat[index+j*7].Y, this.Plat[index+j*7].Color)
//fmt.Printf("%d ", this.Plat[index+j*7].Color)
} }
//fmt.Printf("\n")
} }
this.Debugf()
} }
func (this *MapData) Debugf() { func (this *MapData) Debugf() {
fmt.Printf("================\n") fmt.Printf("================\n")
for index := Width - 1; index >= 0; index-- { for index := Width - 1; index >= 0; index-- {
for j := 0; j < Height; j++ { for j := 0; j < Height; j++ {
fmt.Printf("%d:%d ", this.Plat[index+j*Height].Oid, this.Plat[index+j*Height].Color) fmt.Printf("%d:%d ", this.Plat[index+j*Height].Oid, this.Plat[index+j*Height].Color)
} }
fmt.Printf("\n") fmt.Printf("\n")
} }
} }
// 检查5消 // 检查5消
func (this *MapData) Check5X() (bEliminate bool, score int32) { func (this *MapData) Check5X() (bEliminate bool, score int32) {
var xiaochu []int // 即将消除的key
for k, v := range this.Plat { for k, v := range this.Plat {
if v.Color == 0 { if v.Color == 0 {
continue continue
@ -143,22 +130,21 @@ func (this *MapData) Check5X() (bEliminate bool, score int32) {
k3 := this.Plat[k+2].Color k3 := this.Plat[k+2].Color
k4 := this.Plat[k+3].Color k4 := this.Plat[k+3].Color
k5 := this.Plat[k+4].Color k5 := this.Plat[k+4].Color
if k5 == 0 || k2 == 0 || k3 == 0 || k4 == 0 {
continue
}
if k1 == k2 && k3 == k4 && k5 == k1 && k2 == k3 {
score += this.Plat[k].Score
score += this.Plat[k+1].Score
score += this.Plat[k+2].Score
score += this.Plat[k+3].Score
score += this.Plat[k+4].Score
this.Plat[k] = &pb.GirdeData{}
this.Plat[k+1] = &pb.GirdeData{}
this.Plat[k+2] = &pb.GirdeData{}
this.Plat[k+3] = &pb.GirdeData{}
this.Plat[k+4] = &pb.GirdeData{}
bEliminate = true
if k1 == k2 && k3 == k4 && k5 == k1 && k2 == k3 {
this.oid++
// 生成一个新的类型元素
conf, _ := this.module.configure.GetGameBlock(k1, FiveType)
this.Plat[k+2] = &pb.GirdeData{
Oid: this.oid,
Color: k1,
Cid: conf.Key,
Score: conf.Score,
Special: conf.Type,
}
xiaochu = append(xiaochu, []int{k, k + 1, k + 3, k + 4}...)
bEliminate = true
} }
} }
if k+4*Width < Total { if k+4*Width < Total {
@ -167,29 +153,59 @@ func (this *MapData) Check5X() (bEliminate bool, score int32) {
k3 := this.Plat[k+2*Width].Color k3 := this.Plat[k+2*Width].Color
k4 := this.Plat[k+3*Width].Color k4 := this.Plat[k+3*Width].Color
k5 := this.Plat[k+4*Width].Color k5 := this.Plat[k+4*Width].Color
if k5 == 0 || k2 == 0 || k3 == 0 || k4 == 0 {
continue
}
if k1 == k2 && k3 == k4 && k5 == k1 && k2 == k3 { if k1 == k2 && k3 == k4 && k5 == k1 && k2 == k3 {
score += this.Plat[k].Score
score += this.Plat[k+Width].Score this.oid++
score += this.Plat[k+2*Width].Score // 生成一个新的类型元素
score += this.Plat[k+3*Width].Score conf, _ := this.module.configure.GetGameBlock(k1, FiveType)
score += this.Plat[k+4*Width].Score this.Plat[k+2*Width] = &pb.GirdeData{
this.Plat[k] = &pb.GirdeData{} Oid: this.oid,
this.Plat[k+Width] = &pb.GirdeData{} Color: k1,
this.Plat[k+2*Width] = &pb.GirdeData{} Cid: conf.Key,
this.Plat[k+3*Width] = &pb.GirdeData{} Score: conf.Score,
this.Plat[k+4*Width] = &pb.GirdeData{} Special: conf.Type,
}
xiaochu = append(xiaochu, []int{k, k + Width, k + 3*Width, k + 4*Width}...)
bEliminate = true bEliminate = true
} }
} }
} }
var next []int
for _, id := range xiaochu {
if s := this.Plat[id].Special; s != 0 {
if s == FourUType { // 4消上下类型
for i := 0; i < Total; i++ {
if id/Height == i/Height {
next = append(next, i)
}
}
next = append(next, 1)
} else if s == FourLType { // 左右类型
for i := 0; i < Total; i++ {
if id%Height == i%Height {
next = append(next, i)
}
}
} else if s == FiveType { // 随机消除
} else { // 普通类型 直接消除
score += this.Plat[id].Score
this.Plat[id] = &pb.GirdeData{}
}
}
}
for _, v := range next {
score += this.Plat[v].Score
this.Plat[v] = &pb.GirdeData{}
}
return return
} }
func (this *MapData) Check4X() (bEliminate bool, score int32) { func (this *MapData) Check4X() (bEliminate bool, score int32) {
var xiaochu []int // 即将消除的key
for k, v := range this.Plat { for k, v := range this.Plat {
if v.Color == 0 { if v.Color == 0 {
continue continue
@ -197,22 +213,25 @@ func (this *MapData) Check4X() (bEliminate bool, score int32) {
x := int32(k % Height) // x x := int32(k % Height) // x
if x+3 < Height { if x+3 < Height {
k1 := this.Plat[x].Color k1 := this.Plat[k].Color
k2 := this.Plat[x+1].Color k2 := this.Plat[k+1].Color
k3 := this.Plat[x+2].Color k3 := this.Plat[k+2].Color
k4 := this.Plat[x+3].Color k4 := this.Plat[k+3].Color
if k2 == 0 || k3 == 0 || k4 == 0 {
continue
}
if k1 == k2 && k3 == k4 && k2 == k3 { if k1 == k2 && k3 == k4 && k2 == k3 {
score += this.Plat[x].Score
score += this.Plat[x+1].Score this.oid++
score += this.Plat[x+2].Score // 生成一个新的类型元素
score += this.Plat[x+3].Score conf, _ := this.module.configure.GetGameBlock(k1, FourUType) // 上下类型
this.Plat[x] = &pb.GirdeData{} this.Plat[k+1] = &pb.GirdeData{
this.Plat[x+1] = &pb.GirdeData{} Oid: this.oid,
this.Plat[x+2] = &pb.GirdeData{} Color: k1,
this.Plat[x+3] = &pb.GirdeData{} Cid: conf.Key,
Score: conf.Score,
Special: conf.Type,
}
xiaochu = append(xiaochu, []int{k, k + 2, k + 3}...)
bEliminate = true bEliminate = true
} }
} }
@ -221,27 +240,59 @@ func (this *MapData) Check4X() (bEliminate bool, score int32) {
k2 := this.Plat[k+Width].Color k2 := this.Plat[k+Width].Color
k3 := this.Plat[k+2*Width].Color k3 := this.Plat[k+2*Width].Color
k4 := this.Plat[k+3*Width].Color k4 := this.Plat[k+3*Width].Color
if k2 == 0 || k3 == 0 || k4 == 0 {
continue
}
if k1 == k2 && k3 == k4 && k2 == k3 {
score += this.Plat[k].Score
score += this.Plat[k+Width].Score
score += this.Plat[k+2*Width].Score
score += this.Plat[k+3*Width].Score
this.Plat[k] = &pb.GirdeData{} if k1 == k2 && k3 == k4 && k2 == k3 {
this.Plat[k+Width] = &pb.GirdeData{} this.oid++
this.Plat[k+2*Width] = &pb.GirdeData{} // 生成一个新的类型元素
this.Plat[k+3*Width] = &pb.GirdeData{} conf, _ := this.module.configure.GetGameBlock(k1, FourLType) // 左右类型
this.Plat[k+1*Width] = &pb.GirdeData{
Oid: this.oid,
Color: k1,
Cid: conf.Key,
Score: conf.Score,
Special: conf.Type,
}
xiaochu = append(xiaochu, []int{k, k + 2*Width, k + 3*Width}...)
bEliminate = true bEliminate = true
} }
} }
} }
var next []int
for _, id := range xiaochu {
if s := this.Plat[id].Special; s != 0 {
if s == FourUType { // 4消上下类型
for i := 0; i < Total; i++ {
if id/Height == i/Height {
next = append(next, i)
}
}
next = append(next, 1)
} else if s == FourLType { // 左右类型
for i := 0; i < Total; i++ {
if id%Height == i%Height {
next = append(next, i)
}
}
} else if s == FiveType { // 随机消除
} else { // 普通类型 直接消除
score += this.Plat[id].Score
this.Plat[id] = &pb.GirdeData{}
}
}
}
for _, v := range next {
score += this.Plat[v].Score
this.Plat[v] = &pb.GirdeData{}
}
return return
} }
func (this *MapData) Check3X() (bEliminate bool, score int32) { func (this *MapData) Check3X() (bEliminate bool, score int32) {
var xiaochu []int // 即将消除的key
for k, v := range this.Plat { for k, v := range this.Plat {
if v.Color == 0 { if v.Color == 0 {
continue continue
@ -252,16 +303,9 @@ func (this *MapData) Check3X() (bEliminate bool, score int32) {
k1 := this.Plat[k].Color k1 := this.Plat[k].Color
k2 := this.Plat[k+1].Color k2 := this.Plat[k+1].Color
k3 := this.Plat[k+2].Color k3 := this.Plat[k+2].Color
if k2 == 0 || k3 == 0 {
continue
}
if k1 == k2 && k2 == k3 { if k1 == k2 && k2 == k3 {
score += this.Plat[k].Score xiaochu = append(xiaochu, []int{k, k + 1, k + 2}...)
score += this.Plat[k+1].Score
score += this.Plat[k+2].Score
this.Plat[k] = &pb.GirdeData{}
this.Plat[k+1] = &pb.GirdeData{}
this.Plat[k+2] = &pb.GirdeData{}
bEliminate = true bEliminate = true
} }
} }
@ -270,21 +314,43 @@ func (this *MapData) Check3X() (bEliminate bool, score int32) {
k1 := this.Plat[k].Color k1 := this.Plat[k].Color
k2 := this.Plat[k+Width].Color k2 := this.Plat[k+Width].Color
k3 := this.Plat[k+2*Width].Color k3 := this.Plat[k+2*Width].Color
if k2 == 0 || k3 == 0 {
continue
}
if k1 == k2 && k2 == k3 {
score += this.Plat[k].Score
score += this.Plat[k+Width].Score
score += this.Plat[k+2*Width].Score
this.Plat[k] = &pb.GirdeData{} if k1 == k2 && k2 == k3 {
this.Plat[k+Width] = &pb.GirdeData{} xiaochu = append(xiaochu, []int{k, k + 1, k + 2}...)
this.Plat[k+2*Width] = &pb.GirdeData{}
bEliminate = true bEliminate = true
} }
} }
} }
var next []int
for _, id := range xiaochu {
if s := this.Plat[id].Special; s != 0 {
if s == FourUType { // 4消上下类型
for i := 0; i < Total; i++ {
if id/Height == i/Height {
next = append(next, i)
}
}
next = append(next, 1)
} else if s == FourLType { // 左右类型
for i := 0; i < Total; i++ {
if id%Height == i%Height {
next = append(next, i)
}
}
} else if s == FiveType { // 随机消除
} else { // 普通类型 直接消除
score += this.Plat[id].Score
this.Plat[id] = &pb.GirdeData{}
}
}
}
for _, v := range next {
score += this.Plat[v].Score
this.Plat[v] = &pb.GirdeData{}
}
return return
} }
@ -308,7 +374,6 @@ func (this *MapData) CheckMap() (score int32, szMap []*pb.MapData) {
if curScore == 0 { if curScore == 0 {
break break
} }
//szMap = append(szMap, this.DropGirde()...)
this.DropGirde() this.DropGirde()
szMap = append(szMap, &pb.MapData{ szMap = append(szMap, &pb.MapData{
@ -316,8 +381,6 @@ func (this *MapData) CheckMap() (score int32, szMap []*pb.MapData) {
CurSocre: curScore, CurSocre: curScore,
}) })
} }
//this.Debugf()
return return
} }
@ -336,11 +399,6 @@ func (this *MapData) DropGirde() {
index++ index++
add++ add++
} }
// if this.Plat[k1].Color != 0 {
// tmp := new(pb.GirdeData)
// *tmp = *this.Plat[k1]
// sz = append(sz, tmp)
// }
} }
for m := j + add; m < Height; m++ { for m := j + add; m < Height; m++ {
k1 := i*Width + m k1 := i*Width + m
@ -354,6 +412,8 @@ func (this *MapData) DropGirde() {
this.Debugf() this.Debugf()
return return
} }
// ai操作
func (this *MapData) AiSwapGirde() bool { func (this *MapData) AiSwapGirde() bool {
var ( var (
bSwap bool // 能否交换 bSwap bool // 能否交换
@ -367,7 +427,7 @@ func (this *MapData) AiSwapGirde() bool {
} }
} }
if pos/Width+1 < Width { if pos/Width+1 < Width {
if this.SwapGirde(int32(pos), int32(pos+1)) { if this.SwapGirde(int32(pos), int32(pos+Width)) {
bSwap = true bSwap = true
break break
} }

View File

@ -70,7 +70,7 @@ func NewService(ops ...rpcx.Option) core.IService {
func Test_Main(t *testing.T) { func Test_Main(t *testing.T) {
m := new(entertainment.MapData) m := new(entertainment.MapData)
m.InitMap() m.InitMap(nil)
m.SetMap() m.SetMap()
m.SwapGirde(1, 8) m.SwapGirde(1, 8)

View File

@ -68,6 +68,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (err
} }
return return
} }
firstLogin = true
expand = &pb.DBUserExpand{} expand = &pb.DBUserExpand{}
} }
// 玩家是否已在线 // 玩家是否已在线