我正在制作游戏,我想知道是否有办法让python打印一个看起来像这样的地图,并且在打印最终结果时看起来不错?它应该是基于文本的游戏中的房间地图。我可以用命令格式化它吗?我只是尝试过:
print("|------------------------------|")#print room map
print("| [Chest] |")
print("| _ |")
print("| Door|")
print("| _|")
print("| [Table] |")
print("| (You) |")
print("|------------------------------|")#print room map
可以预见,以上打印:
>>> print_room()
|------------------------------|
| [Chest] |
| _ |
| Door|
| _|
| [Table] |
| (You) |
|------------------------------|
然而,在我的IDE中,这些行中的每一行看起来都在同一个地方终止。如何编写代码,以确保线条宽度相同?我希望它打印看起来像这样:
|---------------------|
| |
| |
| |
| |
|---------------------|
答案 0 :(得分:4)
您使用什么文本编辑器编写代码?我怀疑你使用的是像Word或Wordpad这样使用比例字体的东西。
我建议您切换到专用代码编辑器,例如Notepad++或UltraEdit,或者最坏的情况是记事本。为文本文件制作的编辑器,使用固定的字体,如Courier。这将使你的地图线更容易排列,还有许多其他好处。
注意Stack Overflow如何使用固定的字体?它表明您在每一行上没有正确数量的空格。正确间隔的代码看起来像你想要的那样:
print("|------------------------------|")#print room map
print("| [Chest] |")
print("| _ |")
print("| Door|")
print("| _|")
print("| [Table] |")
print("| (You) |")
print("|------------------------------|")#print room map
答案 1 :(得分:3)
您可以尝试使用多行字符串,即。用三引号括起来的字符串可以在一行上延伸。所以你可以这样做:
map = """
|---------------------|
| |
| |
| |
| |
|---------------------|"""
print(map)
这是你的意思吗?
编辑:在您的代码中,在添加“table”等之后,您还没有使用正确的空格数调整行。如果您有相同的代码,但添加了更多的空格,那么您将会能够让它以你的方式运作。您将其保存在脚本中然后运行它,对吗?不是在翻译中尝试吗?最后,专业提示:在终端中,每个角色占据相同宽度的空间,即
.....
的宽度与
相同
MMMMM
因为在每种情况下它都是相同数量的字符。
答案 2 :(得分:2)
您的基本问题是每条线的长度必须相同。可能干扰这一点的事情:
Word
)将使用可变宽度字体,因为它更美观,并且具有更广泛的美学用途。您应该采取哪些措施来确保您构建字符串的方式变得更加聪明。
让我们从基本的房间字符串,胸部和门开始:
room = "| |"
chest = "[Chest]"
door = "Door"
现在让我们编写一个在特定位置插入对象的函数:
def insert_object(new_object: str, position: int) -> str:
room_start = room[0:position]
end_position = position + len(new_object)
room_end = room[end_position:]
new_room = room_start + new_object + room_end
return new_room
这给我们带来了这样的结果:
>>> room = "| |"
>>> chest = "[Chest]"
>>> door = "Door"
>>> def insert_object(new_object: str, position: int) -> str:
... room_start = room[0:position] # Gets the part of the room before the 'object'
... end_position = position + len(new_object) # Gets the position after the object 'ends'
... room_end = room[end_position:] # Gets the part of the room after the object 'ends'
... new_room = room_start + new_object + room_end # Pieces these parts together, with the object in the middle
... return new_room # Returns the result
...
>>> x = insert_object(chest, 3)
>>> print(x)
'| [Chest] |'
为每一行做这件事'您想要插入物品的房间,并且可以保持宽度!
room = "| |"
chest = "[Chest]"
door = "Door"
wall = "---------------------"
trap = "-"
you = "You"
table = "[Table]"
def print_room():
print(insert_object(wall,1))
print(insert_object(chest,3))
print(insert_object(trap,20))
print(insert_object(door,18))
print(insert_object(trap,21))
print(insert_object(table,4))
print(insert_object(you,3))
print(insert_object(wall,1))
导致:
>>> print_room()
|---------------------|
| [Chest] |
| - |
| Door|
| -|
| [Table] |
| You |
|---------------------|