You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何关联Game类与Board类,创建Game实例时以指定宽高初始化Board

报错原因&关联逻辑说明

你当前代码有两处核心问题:

  • Game类的board属性语法错误:var board = [[String]]属于类型声明和赋值混淆,要么写var board: [[String]](只声明类型),要么写var board = [[String]]()(赋值空数组)
  • 现有Board类没有和Game做参数绑定,每次临时创建实例调用方法的写法不够合理,不符合你要的「Game初始化时自动用传入的高宽生成Board」的需求
修复后代码
class Game {
    var height: Int
    var width: Int
    var player = Player()
    // 直接持有Board实例,完成两个类的关联
    var board: Board
    
    init(height: Int, width: Int) {
        self.height = height
        self.width = width
        // 初始化Game时直接把高宽参数传给Board,自动完成Board的初始化
        self.board = Board(height: height, width: width)
    }
}

class Board {
    // 存储生成好的棋盘数组
    var gameBoard: [[String]]
    
    // 给Board添加自定义初始化方法,接收高宽参数直接生成棋盘
    init(height: Int, width: Int) {
        self.gameBoard = []
        for i in 0...height - 1 {
            if i == 0 || i == height - 1 {
                gameBoard.append(Array(repeating: "🟫", count: width))
            } else {
                var basicLine = Array(repeating: "⬜", count: width)
                basicLine[0] = "🟫"
                basicLine[basicLine.count - 1] = "🟫"
                gameBoard.append(basicLine)
            }
        }
    }
}

class Player {
    var playerPosition = (vertical: 1, horizontal: 1)
    
    enum Move {
        case up
        case down
        case right
        case left
    }
    
    func moveAlien(direction: Move) {
        switch direction {
        case .up: playerPosition.vertical += 1
        case .down: playerPosition.vertical -= 1
        case .right: playerPosition.horizontal += 1
        case .left: playerPosition.horizontal -= 1
        }
    }
}
使用示例

你创建Game实例的时候会自动生成对应尺寸的Board,后续要操作棋盘直接调用Game实例的board属性即可:

// 创建高10、宽8的游戏实例,内部自动生成对应尺寸的棋盘
let myGame = Game(height: 10, width: 8)
// 打印生成好的棋盘
print(myGame.board.gameBoard)

内容的提问来源于stack exchange,提问作者Johny1995QQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:06