背景:拼图方格大小可以是16x16、8x8或4x4,难度随着颜色数量的相似度而变化。七种颜色的数量各不相同,游戏的目标是在拼图格内找到最多/最少的颜色
我希望颜色尽可能聚集在一起,而不是分散在整个拼图网格中,并且每个坐标只能由一种颜色占据。最终生成的结果预计会完全填满并形成七块拼图,每种颜色都有自己的一面,就像七巧板
如何在益智游戏中创建聚类颜色算法? 谢谢你的帮助!
代码沙盒: https://codesandbox.io/s/clustering-3ptu3s
示例:(4x4)
{ row: 0, column: 0, color: 0}
{ row: 0, column: 1, color: 1}
{ row: 0, column: 2, color: 2}
{ row: 0, column: 3, color: 3}
{ row: 1, column: 0, color: 3}
{ row: 1, column: 1, color: 4}
{ row: 1, column: 2, color: 0}
{ row: 1, column: 3, color: 1}
{ row: 2, column: 0, color: 2}
{ row: 2, column: 1, color: 3}
{ row: 2, column: 2, color: 2}
{ row: 2, column: 3, color: 1}
{ row: 3, column: 0, color: 1}
{ row: 3, column: 1, color: 1}
{ row: 3, column: 2, color: 1}
{ row: 3, column: 3, color: 3}
期望的输出:
{ row: 0, column: 0, color: 0}
{ row: 0, column: 1, color: 0}
{ row: 0, column: 2, color: 2}
{ row: 0, column: 3, color: 2}
{ row: 1, column: 0, color: 3}
{ row: 1, column: 1, color: 4}
{ row: 1, column: 2, color: 2}
{ row: 1, column: 3, color: 1}
{ row: 2, column: 0, color: 3}
{ row: 2, column: 1, color: 3}
{ row: 2, column: 2, color: 3}
{ row: 2, column: 3, color: 1}
{ row: 3, column: 0, color: 1}
{ row: 3, column: 1, color: 1}
{ row: 3, column: 2, color: 1}
{ row: 3, column: 3, color: 1}
你可以这样走:
将您的彩色框视为单行(按颜色排序)。然后将这一行放在框中(从左到右奇数行,从右到左偶数行)
例子
0 0 1 1 1 1 1 1 2 2 2 3 3 3 3 4
becomes:
0 0 1 1 ->
1 1 1 1 <-
2 2 2 3 ->
4 3 3 3 <-
也许不是最好的“集群”方式,但至少所有相同颜色的盒子都是相连的。