定义牌的类
class Card():
""" A Playing Card """
ranks=["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
suits=["梅","红","方","黑"]
def __init__(self,rank,suit,face_up=True):
self.rank=rank #牌的大小
self.suit=suit #牌的花色
self.is_face_up=face_up #牌是否翻面
def __str__(self):
if self.is_face_up:
rep=self.suit+self.rank
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 Cards """
def __init__(self):
self.cards=[]
def __str__(self):
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):
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 game of playing cards.")
players=[Hand(),Hand(),Hand(),Hand()]
poke1=Poke()
poke1.populate()
poke1.shuffle()
poke1.deal(players,13)
n=1
for hand in players:
print("牌手",n,end=":")
print(hand)
n=n+1
input("\nPress the enter key to exit.")
主要是定义各种各样的类,来后通过调用这些类以及其中的方法
效果图