它以某种方式起作用,就像我做的那样。但我知道应该有更好和优化的方法来检查所有行和所有颜色。如果你知道,请分享。谢谢
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)")
}
最佳答案
如果我正确理解你的问题,你有一个数组
SKShapeNode
并想检查是否有任何相邻节点具有
相同的填充颜色。这可以简单地通过以下方式完成:
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(...)
检查是否有一对填充颜色相同。
关于ios - 在数组中查找具有相同颜色的元素,如果它们彼此相邻则打印 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482256/