在数组中查找具有相同颜色的元素,如果它们彼此相邻则打印为true

时间:2017-06-11 09:23:08

标签: ios arrays swift sprite-kit compare

它以某种方式起作用,我这样做的方式。但我知道应该有更好和优化的方法来检查所有行和所有颜色。如果您知道,请分享。感谢

  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)")
    }

preview

1 个答案:

答案 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(...)检查是否有一对具有相同的填充颜色。