三消规则debug

This commit is contained in:
meixiongfeng 2024-01-22 14:47:26 +08:00
parent 8dcb5b95c3
commit 85ae2a1d1c

View File

@ -487,30 +487,6 @@ func (this *MapData) CheckMap(color int32, bSkill bool) (szMap []*pb.MapData, xc
new[k] = v new[k] = v
} }
// if bEliminate, xiaochu, s := this.Check5X(); bEliminate {
// for _, v := range xiaochu {
// tXiaochu[v] = struct{}{}
// }
// for k, v := range s {
// new[k] = v
// }
// xc = true // 只要有 4x 5x 就标记ture
// }
// if bEliminate, xiaochu, s := this.Check4X(); bEliminate {
// for _, v := range xiaochu {
// tXiaochu[v] = struct{}{}
// }
// for k, v := range s {
// new[k] = v
// }
// xc = true // 只要有 4x 5x 就标记ture
// }
// if bEliminate, xiaochu := this.Check3X(); bEliminate {
// for _, v := range xiaochu {
// tXiaochu[v] = struct{}{}
// }
// }
for id := range tXiaochu { for id := range tXiaochu {
if _, ok := new[id]; ok { if _, ok := new[id]; ok {
if this.Plat[id].Color == color { if this.Plat[id].Color == color {
@ -1441,6 +1417,7 @@ func (this *MapData) CheckElem(color int32) (mtmp map[int]struct{}, sp map[int]i
w [14][]int32 w [14][]int32
s1 [][]int // heng s1 [][]int // heng
s2 [][]int // shu s2 [][]int // shu
xc [][]int //
) )
mtmp = make(map[int]struct{}, 0) mtmp = make(map[int]struct{}, 0)
sp = make(map[int]int) sp = make(map[int]int)
@ -1547,56 +1524,57 @@ func (this *MapData) CheckElem(color int32) (mtmp map[int]struct{}, sp map[int]i
} }
for _, v := range s1 { for _, v := range s1 {
for _, vs1 := range v { t, xj, new := CheckInSlice(v, s2) // 横竖相交
t := CheckInSlice(vs1, s2) // 横竖相交 if len(t) > 0 {
if len(t) > 0 { xc = append(xc, t)
for _, vs1 := range v { sp[xj] = FiveType
t[vs1] = struct{}{} s2 = new[0:][0:]
} } else {
for k := range t { if len(v) >= 5 {
mtmp[k] = struct{}{} sp[xj] = FiveType
} } else if len(v) >= 4 {
if len(t) >= 5 { sp[len(v)/2] = FourLType
sp[vs1] = FiveType }
} xc = append(xc, v)
}
}
for _, v := range s2 {
if len(v) >= 5 {
sp[len(v)/2] = FiveType
} else if len(v) >= 4 {
sp[len(v)/2] = FourUType
}
xc = append(xc, v)
}
return
}
for k := range t { func CheckInSlice(s []int, sz [][]int) (si []int, xj int, newMatrix [][]int) {
mtmp[k] = struct{}{} newMatrix = make([][]int, len(sz))
} for i := 0; i < len(sz); i++ {
newMatrix[i] = make([]int, len(sz[0]))
}
copy(newMatrix, sz)
for _, index := range s {
for pos, v := range sz {
bfound := false
for _, vs2 := range v {
if index == vs2 {
bfound = true
xj = index // 相交的点
si = append(si, v...)
si = append(si, s...)
break
}
}
if bfound {
newMatrix = append(newMatrix[:pos], newMatrix[pos+1:]...)
break break
} }
} }
} }
for _, v := range s1 {
for _, v1 := range v {
mtmp[v1] = struct{}{}
}
}
for _, v := range s2 {
for _, v1 := range v {
mtmp[v1] = struct{}{}
}
}
return
}
func CheckInSlice(index int, sz [][]int) (m map[int]struct{}) {
m = make(map[int]struct{})
for _, v := range sz {
b := false
for _, vs2 := range v {
if index == vs2 {
b = true
for _, t := range v {
m[t] = struct{}{}
}
}
}
if b {
break
}
}
return return
} }