我是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 =''来摆脱新线,但没有快乐。有没有人对我如何将卡片彼此相邻有任何建议?
提前致谢!
答案 0 :(得分:2)
按照你的方式,这将非常困难。当你写
end=''
只能删除印刷文本末尾的换行符。问题是,你的每一张牌都在右侧有一个新线:
-------
|J |
| |
| | # <--- Newline here
| |
| J|
-------
您需要创建一个获取卡片列表的函数,并创建一个长行。这将是一个坚实的项目。您将不得不取出组成卡片的琴弦,将它们切割成线条(在每个新线上剪切),将所有相应的线条放在一起,摆脱两者之间的换行符,然后将所有碎片粘合在一起。我现在可能会尝试这个早上的项目。
而不是硬编码你所拥有的所有卡片,创建一个你给卡片值的功能,然后为你创建一张卡片。
答案 1 :(得分:2)
我建议你写一个函数,给定i和n,返回一个代表卡n的第i行的字符串。然后,您可以在双嵌套循环中调用它,按顺序打印结果,以获得所需的结果。 您可以从想要查看的输出示例开始,在编写循环时用作参考。
答案 2 :(得分:1)
有趣的小问题。这是我掀起的快速解决方案。
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)