Python Blackjack程序实现卡牌横向并排打印的方法
实现二十一点卡牌横向并排打印的方案
要实现卡牌横向打印,核心思路是将每张卡牌的各行内容拆分,按行号把所有卡牌的对应行拼接后再逐行打印,而非一次性打印完一张卡牌再打下一张。
具体实现步骤
- 统一卡牌的多行格式:确保所有卡牌的行数一致(比如固定为5行或6行),避免排版错乱。
- 拆分卡牌内容:将每张卡牌的多行文本拆分为单行元素的列表,方便按行索引提取内容。
- 逐行拼接打印:遍历每一行索引,把所有卡牌对应索引的行内容用间隔符拼接后打印,完成横向并排效果。
示例修改代码
假设你的卡牌逻辑基础如下,修改后可实现横向打印:
# 生成标准格式的卡牌,返回每行内容的列表 def make_card(rank, suit): suit_chars = {"Hearts": "♥", "Diamonds": "♦", "Clubs": "♣", "Spades": "♠"} suit_char = suit_chars[suit] # 处理牌面数字/字母的对齐,确保占2位宽度 rank_text = f"{rank:<2}" if len(str(rank)) == 1 else str(rank) return [ "┌───────┐", f"| {rank_text} |", f"| {suit_char} |", f"| {rank_text} |", "└───────┘" ] # 示例手牌 player_cards = [make_card("A", "Hearts"), make_card(10, "Spades"), make_card("Q", "Diamonds")] # 横向打印卡牌的函数 def print_horizontal_cards(cards): row_count = len(cards[0]) for row_idx in range(row_count): # 拼接所有卡牌的当前行,用空格分隔 current_line = " ".join([card[row_idx] for card in cards]) print(current_line) # 调用打印 print("你的手牌:") print_horizontal_cards(player_cards)
适配原有代码的思路
如果你的原有代码中是直接打印完整的多行卡牌字符串,需要先将每张卡牌的内容按换行符拆分(比如用card_str.split('\n')),得到每行的列表后,再套用上面的print_horizontal_cards逻辑即可。
内容的提问来源于stack exchange,提问作者Jason Flick
相关产品推荐
相关产品推荐

