gpt4 book ai didi

python - 如何并排放置两个或多个 ASCII 图像?

转载 作者:行者123 更新时间:2023-12-05 09:30:15 26 4
gpt4 key购买 nike

我想制作一系列纸牌游戏。这个想法是将卡片的 ASCII 图像放入字典值中,以便在需要时调用。但是,无论我使用哪种方法,我都不知道如何让卡片并排打印出来。

我已经尝试使用 for 循环、join 和修改 print 函数来解决这个问题。每次输出产生:

.-------.
|A |
| |
| ♣ |
| |
| A|
`-------´

.-------.
|2 |
| |
| ♦ |
| |
| 2|
`-------´

代替:

.-------.  .-------.
|A | |2 |
| | | |
| ♣ | | ♦ |
| | | |
| A| | 2|
`-------´ `-------´

我认为问题与光标停留在图像底部而不是返回到图像顶部有关。我花了几个小时搜索这方面的信息,但没有得到任何结果。

这是字典中的两个示例变量:

ace = r'''
.-------.
|A |
| |
| ♣ |
| |
| A|
`-------´
'''

two = r'''
.-------.
|2 |
| |
| ♦ |
| |
| 2|
`-------´
'''
cards = {"Ace":ace, "Two":two}

# modify the print
print(f'{cards["Ace"]} {cards["Two"]}', end=' ')

# using join
space = " "
deck = space.join(cards.values())
print(deck)

# placing the dictionary entries into a list
cards2 = [cards["Ace"], cards["Two"]]
for item in cards2:
print (item)

最佳答案

您可以 zip()将两张卡片的线条放在一起,并在每行打印一张卡片:

ace = r'''\
.-------.
|A |
| |
| ♣ |
| |
| A|
`-------´
'''

two = r'''\
.-------.
|2 |
| ♦ |
| |
| ♦ |
| 2|
`-------´
'''

spacer = ' ' * 5 # Space between cards.
for a, b in zip(ace.splitlines(), two.splitlines()):
print(f'{a}{spacer}{b}')

输出:

.-------.     .-------.
|A | |2 |
| | | ♦ |
| ♣ | | |
| | | ♦ |
| A| | 2|
`-------´ `-------´

更新:

这是两张或更多卡片的通用版本:

ace = r'''\
.-------.
|A |
| |
| ♣ |
| |
| A|
`-------´
'''

two = r'''\
.-------.
|2 |
| ♦ |
| |
| ♦ |
| 2|
`-------´
'''

three = r'''\
.-------.
|3 |
| ♥ |
| ♥ |
| ♥ |
| 3|
`-------´
r'''

spacing = ' ' * 5 # Between cards.
cards = ace, two, three

for pieces in zip(*(card.splitlines() for card in cards)):
print(spacing.join(pieces))

输出:

.-------.     .-------.     .-------.
|A | |2 | |3 |
| | | ♦ | | ♥ |
| ♣ | | | | ♥ |
| | | ♦ | | ♥ |
| A| | 2| | 3|
`-------´ `-------´ `-------´

关于python - 如何并排放置两个或多个 ASCII 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69795265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com