# Card Module
# Basic classes for a game with playing cards
class Card():
"""A playing card"""
RANKS = ["A","2","3","4","5","6","7",
"8","9","10","J","Q","K"] # 牌面数字1-13
SUITS = ["梅花","方片","红心","黑桃"]
def __init__(self,rank,suit,face_up = True):
self.rank = rank # 牌面数字1~13
self.suit = suit # 花色
self.is_face_up = face_up # 是否显示牌的正面,True为正面,False为反面
def __str__(self): # printf
if self.is_face_up:
rep = self.suit + self.rank # +" " + str(self.pic_order())
else:
rep = "XX"
return rep
def flip(self): # 翻牌方法
self.is_face_up = not self.is_face_up
def pic_order(self): # 牌的顺序号
if self.rank == 'A':
FaceNum = 1
elif self.rank == 'J':
FaceNum = 11
elif self.rank == 'Q':
FaceNum = 12
elif self.rank == 'K':
FaceNum = 13
else:
FaceNum = int(self.rank)
if self.suit == '梅花':
Suit = 1
elif self.suit == '方片':
Suit = 2
elif self.suit == '红桃':
Suit = 3
else:
Suit = 4
return (Suit - 1) * 13 + FaceNum
class Hand( ):
"""A hand of playing"""
def __init__(self):
self.cards = []
def __str__(self): # 重写print()方法
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + "\t"
else:
rep = "无牌"
return rep
def clear(self): # 清空手里的牌
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand): # 把一张牌给其他选手
self.cards.remove(card)
other_hand.add(card)
class Poke(Hand):
"""A deck of playing cards"""
def populate(self):
for suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank , suit))
def shuffle(self): # 洗牌
import random
random.shuffle(self.cards) # 打乱牌的顺序
def deal(self,hands,per_hand = 13): # 发牌,发给玩家,每人默认13张牌
for rounds in range(per_hand):
for hand in hands:
top_card = self.cards[0]
self.cards.remove(top_card)
hand.add(top_card)
if __name__== "__main__":
print('This is a module with classes for playing cards.')
# 四个玩家
players=[Hand(),Hand(),Hand(),Hand()]
poke1=Poke()
poke1.populate() # 生成一副牌
poke1.shuffle() # 洗牌
poke1.deal(players,13) # 发给玩家每人13张牌
# 显示4位牌手的牌
n=1
for hand in players:
print('牌手' , n ,end=':')
print(hand)
n = n+1
input('\nPress the enter key to exit.')
=========================================================================
运行结果截图:
来源:oschina
链接:https://my.oschina.net/u/4460897/blog/3196639