UIKitとSpriteKit(3)

素敵なアニメーションはまだありませんが、プレイをすることが可能です。

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

プログラムは、非常に美しくありません。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.