Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
221 views
in Technique[技术] by (71.8m points)

Display graphic cards next to each other in Python

I am making a card game and I want to display the cards graphically with strings. However, with my current method that are placed underneath each other. How can I put them next to each other without messing up the visuals?

def display_card(card):
    
    suit = card[0]
    value = card[1]
    
    graphic_card = (
        '┌─────────┐
'
        '│{}       │
'
        '│         │
'
        '│         │
'
        '│    {}   │
'
        '│         │
'
        '│         │
'
        '│       {}│
'
        '└─────────┘'
    ).format(
        format(value, ' <2'),
        format(suit, ' <2'),
        format(value, ' >2')
    )

    print(graphic_card)
    
 
cards= ["?2", "?3", "?4"]
for card in cards:
    display_card(card)
question from:https://stackoverflow.com/questions/65682108/display-graphic-cards-next-to-each-other-in-python

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It's probably simpler if you change your method to just return a list of the lines for the cards, then you can zip those together and print them.

def get_card(card):
    suit = card[0]
    value = card[1:]  # 1: for '10'
    return (
        '┌─────────┐
'
        '│{}       │
'
        '│         │
'
        '│         │
'
        '│    {}   │
'
        '│         │
'
        '│         │
'
        '│       {}│
'
        '└─────────┘'
    ).format(
        format(value, ' <2'),
        format(suit, ' <2'),
        format(value, ' >2')
    ).splitlines()

def display_cards(cards):
    for lines in zip(*map(get_card, cards)):
        print(*lines)
 
cards= ["?2", "?3", "?4"]
display_cards(cards)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...