如何在Swift文本游戏中自动生成并控制台输出房屋布局地图?
Swift文本游戏:动态生成房屋布局坐标的问题
我在Linux虚拟机的Visual Studio Code中用Swift开发一款以房屋为布局的文本类游戏,已经实现了带有东南西北四个方向出口的Room对象,通过字典关联出口指向的房间,代码如下:
enum Direction: String { /// 四个主方向 case North, East, South, West } /// 游戏地图中的房间(地点)基础实现,包含名称和指向其他房间的出口,出口以`Direction`标记 class Room { /// 房间名称(无需唯一标识) var name: String /// 出口映射(初始为空) var exits = [Direction: Room]() /// 初始化方法 init(name: String) { self.name = name } /** 根据方向获取当前房间的相邻房间 - 参数 direction: 方向枚举`Direction` - 返回值: 对应方向出口的房间(如果存在) */ func nextRoom(direction: Direction) -> Room? { return exits[direction] } } /// 扩展`Room`以实现`CustomStringConvertible`协议 extension Room: CustomStringConvertible { /// 描述信息包含房间名称及所有可用出口方向 var description: String { return "You are in \(self.name)\n\nExits:\n\(self.exits.keys.map { "- \($0.rawValue)" }.joined(separator: "\n"))" } }
我已经设计好房屋的房间布局,并且完成了单个房间的文本表示。由于后续计划添加更多房屋作为关卡,希望避免硬编码地图。
目前遇到的核心问题是如何正确输出房间的布局位置,我尝试过两种方法但都失败了:
- 按行从左到右遍历房间并分配坐标,输出时房间位置错误(例如厨房与浴室错误对齐);
- 在房屋边缘添加“空房间”来调整布局,效果不佳。
网上相关资料多基于XCode且以硬编码地图为主,因此求助可行的解决方案或改进建议。
内容的提问来源于stack exchange,提问作者StryfingBl4ck
相关产品推荐
相关产品推荐

