下面我将使用Python创建一个二维数组来表示一副标准的52张扑克牌,并展示如何操作和使用这个数据结构。
python
class PokerDeck:
def __init__(self):
self.suits = ["♠", "♥", "♦", "♣"] # 花色: 黑桃、红心、方块、梅花
self.ranks = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
self.deck = self.create_deck
def create_deck(self):
创建一副完整的扑克牌
deck = []
for suit in self.suits:
suit_cards = []
for rank in self.ranks:
suit_cards.append(f"{rank}{suit}")
deck.append(suit_cards)
return deck
def display_deck(self):
显示整副扑克牌
print("完整扑克牌:")
for i, suit in enumerate(self.deck):
print(f"{self.suits[i]}花色: ", end="")
for card in suit:
print(f"{card} ", end="")
def shuffle_deck(self):
洗牌
import random
shuffled_deck = []
for suit in self.deck:
random.shuffle(suit)
shuffled_deck.append(suit)
悟空德州官网入口self.deck = shuffled_deck
def deal_card(self, suit_index=None, rank_index=None):
发牌
if suit_index is None or rank_index is None:
suit_index = random.randint(0, len(self len(self.suits)-1)
rank_index = random.randint(0, len(self.ranks)-1)
# 检查该位置的牌是否还在
while len(self.deck[suit_index])
suit_index = (suit_index + 1) % len(self.suits)
rank_index = 0
return self.deck[suit_index].pop(rank_index)
_index)
def reset_deck(self):
重置牌堆
self.deck = self.create_deck
# 演示代码
if __name__ == "__main__":
poker = PokerDeck
# 显示原始扑克牌
print("原始扑克牌:")
poker.display_deck
print("\
+ "="*50 + "\
)
# 洗牌
poker.shuffle_deck
print("洗牌后的扑克牌:")
poker.display_deck
print("\
+ "="*50 + "\
)
# 发几张牌
print("随机发5张牌:")
for i in range(5):
card = poker.deal_card
print(f"第{i+1}张牌: {card}")
print("\
+ "="*50 + "\
)
# 显示剩余牌
print("发牌后剩余的扑克牌:")
poker.display_deck
1. PokerDeck类:封装了扑克牌的所有操作
2. 主要方法:
原始扑克牌:
♠花色: A♠ 2♠ 3♠ 4♠ 5♠ 6♠ 7♠ 8♠ 9♠ 10♠ J♠ Q♠ K♠
♥花色: A♥ 2♥ 3♥ 4♥ 5♥ 6♥ 7♥ 8♥ 9♥ 10♥ J♥ Q♥ K♥
♦花色: A♦ 2♦ 3♦ 4♦ 5♦ 6♦ 7♦ 8♦ 9♦ 10♦ J♦ Q♦ K♦
♣花色: A♣ 2♣ 3♣ 4♣ 5♣ 6♣ 7♣ 8♣ 9♣ 10♣ J♣ Q♣ K♣
==================================================
洗牌后的扑克牌:
♠花色: 5♠ 8♠ J♠ 2♠ Q♠ 3♠ 9♠ K♠ 7♠ A♠ 4♠ 6♠ 10♠
♥花色: 10♥ 4♥ 8♥ A♥ 7♥ 2♥ 9♥ Q♥ 6♥ 3♥ J♥ 5♥ K♥
♦花色: 7♦ 5♦ Q♦ 10♦ 8♦ 4♦ 3♦ J♦ A♦ 2♦ 6♦ K♦ 9♦
♣花色: 9♣ K♣ 8♣ 3♣ 7♣ 6♣ 2♣ 10♣ Q♣ 4♣ A♣ J♣ 5♣
==================================================
随机发5张牌:
第1张牌: 6♣
第2张牌: 4♥
第3张牌: 9♠
第4张牌: 3♦
第5张牌: 10♥
==================================================
发牌后剩余的扑克牌:
♠花色: 5♠ 8♠ J♠ 2♠ Q♠ 3♠ K♠ 7♠ A♠ 4♠ 10♠
♥花色: 8♥ A♥ 7♥ 2♥ 9♥ Q♥ 6♥ J♥ 5♥ K♥
♦花色: 7♦ 5♦ Q♦ 10♦ 8♦ 4♦ J♦ A♦ 2♦ K♦ 9♦
♣花色: 9♣ K♣ 8♣ 3♣ 7♣ 2♣ 10♣ Q♣ 4♣ A♣ J♣
这种二维数组结构非常适合表示扑克牌,因为它自然地反映了扑克牌的组织方式:按花色分组,每组包含相同花色的所有牌面值。
Copyright © 悟空德州.