下面我將使用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 © 悟空德州.