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

如何在Python终端中为文本冒险游戏添加星号边框?

嘿,这个需求超赞!给终端文本加星号边框绝对能让你的冒险游戏氛围感拉满,我给你几个从零开始的实现思路,完全适配你刚起步的开发阶段:

思路1:固定宽度的星号边框

这种方法适合你已经知道内容大致宽度的场景,比如游戏开场标题、固定格式的提示框,实现起来特别简单:

# 定义边框的总宽度(比如选50个字符宽)
border_width = 50

# 打印顶部全星号边框
print("*" * border_width)

# 打印带边框的内容,用f-string让内容居中显示
print(f"*{'欢迎来到文本冒险游戏!':^{border_width-2}}*")
print(f"*{'你发现了一个神秘的洞穴...':^{border_width-2}}*")

# 打印底部全星号边框
print("*" * border_width)

这里的^{border_width-2}是让内容在中间区域居中,减去2是因为左右各占了一个星号,剩下的空间留给内容和填充的空格。

思路2:自适应内容宽度的边框

如果你的游戏内容长度不确定(比如玩家的对话、随机生成的剧情段落),可以让边框自动适配最长的那行内容,保证边框始终整齐:

# 把要显示的内容放进列表里
game_content = [
    "你推开了锈迹斑斑的铁门",
    "里面传来一阵奇怪的声响",
    "你要不要进去看看?(Y/N)"
]

# 找到列表里最长的那行内容的长度
max_line_length = max(len(line) for line in game_content)

# 计算边框总宽度:内容长度 + 左右各2个空格 + 2个星号
border_width = max_line_length + 4

# 打印顶部边框
print("*" * border_width)

# 逐行打印内容,左对齐并补全空格
for line in game_content:
    print(f"* {line.ljust(max_line_length)} *")

# 打印底部边框
print("*" * border_width)

用ljust(max_line_length)可以让每行内容左对齐,右边自动补空格,确保所有行的长度一致,边框看起来更规整。

思路3:封装成可复用的函数

既然游戏里肯定会多次用到边框效果,把逻辑封装成函数能让你的代码更整洁,以后需要时直接调用就行:

def print_with_border(content, align="center"):
    # 如果传入的是单个字符串,自动转成列表
    if isinstance(content, str):
        content = [content]
    
    # 计算最长行的长度和边框宽度
    max_line_length = max(len(line) for line in content)
    border_width = max_line_length + 4
    
    # 打印顶部边框
    print("*" * border_width)
    
    # 根据选择的对齐方式格式化每行内容
    for line in content:
        if align == "center":
            formatted_line = line.center(max_line_length)
        elif align == "left":
            formatted_line = line.ljust(max_line_length)
        elif align == "right":
            formatted_line = line.rjust(max_line_length)
        else:
            # 默认左对齐
            formatted_line = line.ljust(max_line_length)
        
        print(f"* {formatted_line} *")
    
    # 打印底部边框
    print("*" * border_width)

# 调用示例
print_with_border("欢迎来到我的冒险世界!")
print_with_border(["你在森林里迷路了", "前方有三条路", "你选哪一条?"], align="left")

这个函数支持单个文本或多行内容,还能选择左对齐、居中、右对齐三种方式,灵活性拉满。

小提示:你还可以在边框前后加空行(print()),让边框和其他内容更区分开,或者尝试用***代替单个*做边框的角落,增加设计感~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 09:47:41