Search code examples
pythoncard

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 = (
        '┌─────────┐\n'
        '│{}       │\n'
        '│         │\n'
        '│         │\n'
        '│    {}   │\n'
        '│         │\n'
        '│         │\n'
        '│       {}│\n'
        '└─────────┘'
    ).format(
        format(value, ' <2'),
        format(suit, ' <2'),
        format(value, ' >2')
    )

    print(graphic_card)
    
 
cards= ["♥2", "♥3", "♥4"]
for card in cards:
    display_card(card)

Solution

  • 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 (
            '┌─────────┐\n'
            '│{}       │\n'
            '│         │\n'
            '│         │\n'
            '│    {}   │\n'
            '│         │\n'
            '│         │\n'
            '│       {}│\n'
            '└─────────┘'
        ).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)