它以某种方式起作用,我这样做的方式。但我知道应该有更好和优化的方法来检查所有行和所有颜色。如果您知道,请分享。感谢
func checkMovesAvailable(){
var count = 0
var yellowArray = [0,0,0,0]
var movesAvailable: Bool = false
for i in 0..<3{
square[i, 0]
if(square.fillColor == SKColor.yellow){
yellowArray.remove(at: i)
yellowArray.insert(1, at: i)
print(yellowArray)
if yellowArray[0] == yellowArray[1] || yellowArray[1] == yellowArray[2] ||
yellowArray[2] == yellowArray[3] {
count += 1
}
}
}
if(count>=2){
movesAvailable = true
}
if(count<=1){
movesAvailable = false
}
print("movesAvailable: \(movesAvailable)")
}
答案 0 :(得分:4)
如果我理解你的问题,你就有了一个数组
SKShapeNode
的{{1}} s并想要检查是否有任何相邻节点
相同的填充颜色。这可以简单地完成:
func isMoveAvailable(squares: [SKShapeNode]) -> Bool {
return zip(squares, squares.dropFirst()).contains(where: { $0.fillColor == $1.fillColor })
}
说明:
squares.dropFirst()
返回节点的序列,不带
第一个元素。 zip(squares, squares.dropFirst())
返回带有对的序列
相邻节点:
(node0, node1), (node1, node2), ...
contains(...)
检查是否有一对具有相同的填充颜色。