【问题标题】:A compass for a textadventure文本冒险的指南针
【发布时间】:2020-12-14 20:16:12
【问题描述】:

我正在尝试为文本冒险编写一个 ascii 指南针。我在这个网址找到了我想做的事情:

https://codereview.stackexchange.com/questions/207997/map-generator-for-a-text-based-role-playing-game

我为我做了这个修改:

north = "The Hills"
west = "A realy dark room"  
#west = "A longer text destroy the positions"  
east = "Entrance to the Dungeon"
south = "[X]"

n = "N"
s = "S"
vert_line = "║"
hzt_line = " ⯇ W ══ (C) ══ E ⯈ "

print(north.center(72, " "))
print(r"▲".rjust(len(west)+10))
print(r""+n.rjust(len(west)+10))
print(r""+vert_line.rjust(len(west)+10))
print(r""+vert_line.rjust(len(west)+10))
print(west.rjust(len(east)) + hzt_line + east)
print(r""+vert_line.rjust(len(west)+10))
print(r""+vert_line.rjust(len(west)+10))
print(r""+s.rjust(len(west)+10))
print(r"▼".rjust(len(west)+10))
print(south.center(len(west)+len(hzt_line)+len(east)-5, " "))

问题在于为标签计算正确的空白。它取决于文本的长度,并超出中心。

我还卡在计算空格..结果应该是这样的:

                   This is up
                       ▲
                       N               
                       |               
 To the left   ◀ W ── [C] ── E ⯈   Dining Room
                       |               
                       S              
                       ▼ 
                    Kitchen            
 

代码看起来也很丑,也许有人知道更聪明的解决方案。

非常感谢您的帮助!

Rufnex

【问题讨论】:

标签: python string text ascii adventure


【解决方案1】:

我在使用您的代码时遇到了问题。由于某种原因,左箭头图形使居中混乱。当我更改角色时,效果很好:

north = "The Hills"
west = "A realy dark room"
east = "Entrance to the Dungeon"
south = "[X]"

n = "N"
s = "S"
vert_line = "║"
#hzt_line = " ⯇ W ══ (C) ══ E ⯈ " # for some reason the left arrow graphic messes up the centering
hzt_line = " < W == (C) == E > "

# synchronize east/west lengths and get line length

labelsize= max(len(west),len(east))
westpad = west.rjust(labelsize)
eastpad = east.ljust(labelsize)
long_line = westpad+hzt_line+eastpad
line_length = len(long_line)

# print compass

print(north.center(line_length))
print(r"▲".center(line_length))
print(n.center(line_length))
print(vert_line.center(line_length))
print(vert_line.center(line_length))
print(long_line.center(line_length))
print(vert_line.center(line_length))
print(vert_line.center(line_length))
print(s.center(line_length))
print(r"▼".center(line_length))
print(south.center(line_length))

【讨论】:

  • 非常感谢!这很完美。我认为数组主题是一个unicode问题。我只是..我没想到;o)
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
相关资源
最近更新 更多