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

塔防游戏开发:如何在网格单元格内分栏显示僵尸名称与HP?

问题解决方案

1. 修复僵尸重复生成问题

当前每次绘制行时都会创建新僵尸,导致每行最后一格都出现僵尸。核心问题是僵尸生成逻辑嵌套在绘制循环内,需将生成与绘制逻辑分离:

  • 预先创建二维列表作为网格状态容器,存储每个格子的僵尸实例(无僵尸则为None)
  • 绘制时仅读取容器内的已有数据,不再重复生成僵尸

示例修改:

# 初始化网格:grid[row][col] 对应格子的僵尸,无则为None
grid_rows = 3
grid_cols = 5
grid = [[None for _ in range(grid_cols)] for _ in range(grid_rows)]

# 仅在指定位置生成僵尸(示例:第0行第2列、第1行第3列)
grid[0][2] = Zombie(shortform="普僵", hp=100)
grid[1][3] = Zombie(shortform="路障", hp=150)

2. 实现僵尸信息分两行显示

要让名称在上、HP在下且适配格子,需将每个单元格拆分为两行渲染,同时用文本对齐保证格式统一:

  • 每个格子固定宽度(比如10字符),用str.center()实现文本居中
  • 分两行绘制:第一行显示僵尸简称,第二行显示HP信息;无僵尸则显示空内容

完整绘制代码示例:

# 绘制网格边框与内容
for row in range(grid_rows):
    # 绘制格子顶部分隔线
    print("+----------" * grid_cols + "+")
    
    # 第一行:僵尸名称
    name_line = "|"
    for col in range(grid_cols):
        zombie = grid[row][col]
        content = zombie.shortform if zombie else ""
        # 填充为8字符居中,适配边框格式
        name_line += f" {content.center(8)} |"
    print(name_line)
    
    # 第二行:僵尸HP
    hp_line = "|"
    for col in range(grid_cols):
        zombie = grid[row][col]
        content = f"HP:{zombie.hp}" if zombie else ""
        hp_line += f" {content.center(8)} |"
    print(hp_line)

# 绘制网格底部分隔线
print("+----------" * grid_cols + "+")

效果示例

修改后会输出格式规整的网格:

+----------+----------+----------+----------+----------+
|    普僵    |          |          |          |          |
|  HP:100   |          |          |          |          |
+----------+----------+----------+----------+----------+
|          |          |          |    路障    |          |
|          |          |          |  HP:150   |          |
+----------+----------+----------+----------+----------+
|          |          |          |          |          |
|          |          |          |          |          |
+----------+----------+----------+----------+----------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:03:38