我对 Python 还很陌生,目前正在尝试使用 ASCII 图形来表示纸牌来创建一个基本的二十一点游戏。我已将卡片图像放置在多行字符串列表中,其想法是在需要显示卡片时调用每个图像的特定索引。
但是,我无法让它们并排打印,而且似乎没有任何修改可以使其工作。这是代码:
CARDS = ['''
-------
|K |
| |
| |
| |
| K|
------- ''', '''
-------
|Q |
| |
| |
| |
| Q|
------- ''', '''
-------
|J |
| |
| |
| |
| J|
------- ''', '''
-------
|10 |
| |
| |
| |
| 10|
------- ''', '''
-------
|9 |
| |
| |
| |
| 9|
------- ''', '''
-------
|8 |
| |
| |
| |
| 8|
------- ''', '''
-------
|7 |
| |
| |
| |
| 7|
------- ''', '''
-------
|6 |
| |
| |
| |
| 6|
------- ''', '''
-------
|5 |
| |
| |
| |
| 5|
------- ''', '''
-------
|6 |
| |
| |
| |
| 6|
------- ''', '''
-------
|5 |
| |
| |
| |
| 5|
------- ''', '''
-------
|4 |
| |
| |
| |
| 4|
------- ''', '''
-------
|3 |
| |
| |
| |
| 3|
------- ''', '''
-------
|2 |
| |
| |
| |
| 2|
------- ''', '''
-------
|A |
| |
| |
| |
| A|
------- '''
]
BLANKCARD = '''
-------
|XXXXXXX|
|XXXXXXX|
|XXXXXXX|
|XXXXXXX|
|XXXXXXX|
------- '''
def displayCards():
print(CARDS[2] + CARDS[14], end='')
displayCards()
上面的代码打印以下内容:
-------
|J |
| |
| |
| |
| J|
-------
-------
|A |
| |
| |
| |
| A|
-------
我尝试使用 end='' 来摆脱新行,但没有任何乐趣。有人对如何让卡片彼此相邻有任何建议吗?
提前致谢!
有趣的小问题。 这是我想出的一个快速解决方案。
class Card:
def topchar(char):
return '|{} |'.format(char)
def botchar(char):
return '| {}|'.format(char)
def print(char_list):
top = ' ------- '
side ='| |'
topout = ''
topchar = ''
botchar = ''
blankside = ''
for char in char_list:
topout += top + ' '
topchar += Card.topchar(char) + ' '
blankside += side + ' '
botchar += Card.botchar(char) + ' '
print(topout)
print(topchar)
print(blankside)
print(blankside)
print(blankside)
print(botchar)
print(topout)
按照你的做法,这将是非常困难的。当你写的时候
end=''
这只消除了打印文本末尾的换行符。问题是,你的每一张卡片的右侧都有一个新行:
-------
|J |
| |
| | # <--- Newline here
| |
| J|
-------
您需要创建一个函数来获取卡片列表,并创建一长行。这本身就是一个可靠的项目。您必须取出构成卡片的字符串,将它们切成线(在每条新线上切割),将所有相应的线放在一起,去掉中间的换行符,然后将所有部分粘合在一起。我现在可能会在早上的项目中尝试这个。
并且不要像您那样对所有卡片进行硬编码,而是创建一个您为其赋予卡片值的函数,它会为您创建一张卡片。
我建议你编写一个函数,给定 i 和 n,返回一个表示卡 n 的第 i 行的字符串。然后,您可以在双重嵌套循环中调用它,按顺序打印结果,以获得您需要的结果。 您可以首先制作一个您想要查看的输出示例,以在编码循环时用作参考。
我建议您创建一个函数,当提供 i 和 n 时,会生成一个与卡 n 的第 i 行相对应的字符串。为了获得所需的结果,您可以在双重嵌套循环中运行它,并按顺序发布结果。首先,您可以创建所需输出的模型,以在对循环进行编码时作为指南。