【问题标题】:Find elements in array with the same color and print true if they are next to each other在数组中查找具有相同颜色的元素,如果它们彼此相邻则打印 true
【发布时间】:2017-06-11 09:23:08
【问题描述】:

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

  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 中的黄色。因此,如果两个黄色方块彼此相邻,那么您可以将一个移动到另一个 = 移动可用)

标签: ios arrays swift sprite-kit compare


【解决方案1】:

如果我正确理解你的问题,你有一个数组 的SKShapeNodes 并想检查是否有任何相邻节点具有 相同的填充颜色。这可以简单地完成:

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

【讨论】:

  • 这正是我想要的。谢谢!任何解释都会很棒
猜你喜欢
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多