素敵なアニメーションはまだありませんが、プレイをすることが可能です。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { guard let touch = touches.first else { return } let location = touch.location(in: cookiesLayer) let (success, col, row) = convertPoint(location) if success { if level.getTableAt(col: col, row: row) == 0 { // an empty place is selected, so highlight it. rowSelected = row colSelected = col if selectedSprite != nil { selectedSprite.run(SKAction.removeFromParent()) } selectedSprite = SKSpriteNode(imageNamed: "Undef-Highlighted") selectedSprite.size = CGSize(width: TileWidth, height: TileHeight) selectedSprite.position = pointFor(col: colSelected, row: rowSelected) selectedLayer.addChild(selectedSprite) showCandidate(col: colSelected, row: rowSelected) } else if row == 10 { // number selected numberSelected = true numberToMove = col + 1 if level.isSafeForNum(col: colSelected, row: rowSelected, num: numberToMove) { level.setTableAt(col: colSelected, row: rowSelected, val: numberToMove) let sprite = SKSpriteNode(imageNamed: spriteNames[numberToMove]+"-Highlighted") sprite.size = CGSize(width: TileWidth, height: TileHeight) sprite.position = pointFor(col: colSelected, row: rowSelected) userLayer.addChild(sprite) level.setTableAt(col: colSelected, row: rowSelected, val: -numberToMove) if selectedSprite != nil { selectedSprite.run(SKAction.removeFromParent()) } } } else if level.getTableAt(col: col, row: row ) < 0 { // cancel move rowSelected = row colSelected = col level.setTableAt(col: col, row: row, val: 0) let location = touch.location(in: self) let sprite: SKNode? = atPoint(location) sprite?.run(SKAction.removeFromParent()) if selectedSprite != nil { selectedSprite.run(SKAction.removeFromParent()) } selectedSprite = SKSpriteNode(imageNamed: "Undef-Highlighted") selectedSprite.size = CGSize(width: TileWidth, height: TileHeight) selectedSprite.position = pointFor(col: col, row: row) selectedLayer.addChild(selectedSprite) showCandidate(col: col, row: row) } } }
プログラムは、非常に美しくありません。