使用 Swift 在 Sprite Kit 中构建棋盘游戏? [关闭]

2024-05-22

在使用 Swift 的 Sprite Kit 中,我试图构建一个国际象棋棋盘(实际上是一个类似国际象棋的棋盘/平铺网格)。那么一般来说,我应该如何创建方形网格板?

我做了很多研究,并通过多维数组研究了象棋棋盘的高级概念的一些示例,但它仍然没有真正解释如何在 Sprite Kit 中直观地表示它,更重要的是,如何将视觉表示映射到多维数组中的字母+数字表示...

有什么想法吗?

如果有人能回答上述问题中的至少一点/部分,我们将不胜感激!非常感谢您!


在 SpriteKit 中绘制棋盘的一种方法是在适当的位置添加交替的白色和黑色精灵节点。下面是如何执行此操作的示例。

    override func didMoveToView(view: SKView) {
        self.scaleMode = .ResizeFill

        // Draw the board
        drawBoard()
        // Add a game piece to the board
        if let square = squareWithName("b7") {
            let gamePiece = SKSpriteNode(imageNamed: "Spaceship")
            gamePiece.size = CGSizeMake(24, 24)
            square.addChild(gamePiece)
        }
        if let square = squareWithName("e3") {
            let gamePiece = SKSpriteNode(imageNamed: "Spaceship")
            gamePiece.size = CGSizeMake(24, 24)
            square.addChild(gamePiece)
        }
    }

该方法绘制棋盘。

    func drawBoard() {
        // Board parameters
        let numRows = 8
        let numCols = 8
        let squareSize = CGSizeMake(32, 32)
        let xOffset:CGFloat = 50
        let yOffset:CGFloat = 50
        // Column characters
        let alphas:String = "abcdefgh"
        // Used to alternate between white and black squares
        var toggle:Bool = false
        for row in 0...numRows-1 {
            for col in 0...numCols-1 {
                // Letter for this column
                let colChar = Array(alphas)[col]
                // Determine the color of square
                let color = toggle ? SKColor.whiteColor() : SKColor.blackColor()
                let square = SKSpriteNode(color: color, size: squareSize)
                square.position = CGPointMake(CGFloat(col) * squareSize.width + xOffset,
                    CGFloat(row) * squareSize.height + yOffset)
                // Set sprite's name (e.g., a8, c5, d1)
                square.name = "\(colChar)\(8-row)"
                self.addChild(square)
                toggle = !toggle
            }
            toggle = !toggle
        }
    }

该方法返回指定名称的方形节点

    func squareWithName(name:String) -> SKSpriteNode? {
        let square:SKSpriteNode? = self.childNodeWithName(name) as SKSpriteNode?
        return square
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 在 Sprite Kit 中构建棋盘游戏? [关闭] 的相关文章

随机推荐