From dff93e922db3a9ddf4e014dc80a8c3436f6b377c Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 6 Jun 2023 12:33:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=90=E5=B0=84=E5=9B=BE=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=9F=A9=E9=98=B5=E9=A2=84=E8=A7=88=EF=BC=8C=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E4=B8=8D=E5=90=88=E7=90=86=E6=8E=89=E8=90=BD=E8=BE=85=E5=8A=A9?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/g2d/physics.go | 86 ---------------------------------- utils/g2d/radiation_pattern.go | 14 ++++++ 2 files changed, 14 insertions(+), 86 deletions(-) diff --git a/utils/g2d/physics.go b/utils/g2d/physics.go index 00a3d07..1dd1fa1 100644 --- a/utils/g2d/physics.go +++ b/utils/g2d/physics.go @@ -27,49 +27,6 @@ func SlideDropXY[T any](matrix [][]T, x, y int, isStop func(start T, x, y int, d return } -// SlideDropX 侧滑掉落一整列 -// - 返回每一个成员的x、y轴新坐标 -func SlideDropX[T any](matrix [][]T, x int, isStop func(start T, x, y int, data T) bool) (result [][2]int, change bool) { - result = make([][2]int, len(matrix[x])) - for y := len(matrix[x]) - 1; y >= 0; y-- { - dropX, dropY := SlideDropXY(matrix, x, y, isStop) - result[y] = PositionToArray(dropX, dropY) - if y != dropY { - change = true - } - } - return -} - -// SlideDropY 侧滑掉落一整行 -// - 返回每一个成员的x、y轴新坐标 -func SlideDropY[T any](matrix [][]T, y int, isStop func(start T, x, y int, data T) bool) (result [][2]int, change bool) { - result = make([][2]int, len(matrix)) - for x := 0; x < len(matrix); x++ { - dropX, dropY := SlideDropXY(matrix, x, y, isStop) - result[x] = PositionToArray(dropX, dropY) - if x != dropX { - change = true - } - } - return -} - -// SlideDrop 侧滑掉落整个矩阵 -func SlideDrop[T any](matrix [][]T, isStop func(start T, x, y int, data T) bool) (result [][][2]int, change bool) { - result = make([][][2]int, len(matrix)) - for x := 0; x < len(matrix); x++ { - ys := make([][2]int, len(matrix[x])) - var dropYs [][2]int - dropYs, change = SlideDropX(matrix, x, isStop) - for y, position := range dropYs { - ys[y] = position - } - result[x] = ys - } - return -} - // VerticalDropXY 垂直掉落特定位置成员 func VerticalDropXY[T any](matrix [][]T, x, y int, isStop func(start T, x, y int, data T) bool) (dropX, dropY int) { height := len(matrix[0]) @@ -83,46 +40,3 @@ func VerticalDropXY[T any](matrix [][]T, x, y int, isStop func(start T, x, y int offsetY++ } } - -// VerticalDropX 垂直掉落一整列 -// - 返回每一个成员的y轴新坐标 -func VerticalDropX[T any](matrix [][]T, x int, isStop func(start T, x, y int, data T) bool) (result []int, change bool) { - result = make([]int, len(matrix[x])) - for y := len(matrix[x]) - 1; y >= 0; y-- { - _, dropY := VerticalDropXY(matrix, x, y, isStop) - result[y] = dropY - if y != dropY { - change = true - } - } - return -} - -// VerticalDropY 垂直掉落一整行 -// - 返回每一个成员的x轴新坐标 -func VerticalDropY[T any](matrix [][]T, y int, isStop func(start T, x, y int, data T) bool) (result []int, change bool) { - result = make([]int, len(matrix)) - for x := 0; x < len(matrix); x++ { - dropX, _ := VerticalDropXY(matrix, x, y, isStop) - result[x] = dropX - if x != dropX { - change = true - } - } - return -} - -// VerticalDrop 垂直掉落整个矩阵 -func VerticalDrop[T any](matrix [][]T, isStop func(start T, x, y int, data T) bool) (result [][][2]int, change bool) { - result = make([][][2]int, len(matrix)) - for x := 0; x < len(matrix); x++ { - ys := make([][2]int, len(matrix[x])) - var dropYs []int - dropYs, change = VerticalDropX(matrix, x, isStop) - for y, positionY := range dropYs { - ys[y] = PositionToArray(x, positionY) - } - result[x] = ys - } - return -} diff --git a/utils/g2d/radiation_pattern.go b/utils/g2d/radiation_pattern.go index 7422a8a..13643c7 100644 --- a/utils/g2d/radiation_pattern.go +++ b/utils/g2d/radiation_pattern.go @@ -1,6 +1,7 @@ package g2d import ( + "fmt" "github.com/kercylan98/minotaur/utils/hash" "github.com/kercylan98/minotaur/utils/synchronization" "sync" @@ -159,3 +160,16 @@ func (slf *RadiationPattern[ItemType, Item]) searchNeighbour(x, y int, filter *s }) slf.links.Set(itemGuid, neighbours) } + +func (slf *RadiationPattern[ItemType, Item]) String() string { + var g string + for y := 0; y < len(slf.matrix[0]); y++ { + for x := 0; x < len(slf.matrix); x++ { + item := slf.matrix[x][y] + g += fmt.Sprintf("%v\t\t", item.GetType()) + } + g += "\r\n" + } + g += "\r\n" + return g +}