一、打开软件 新建窗口 输入代码
#Cards module
#1.Card类
class Card():
RANKS=['A','2','3','4','5',
'6','7','8','9','10',
'J','Q','K']
SUITS=['梅','方','红','黑']
#a.构造函数即初始化
def __init__(self,rank,suit,face_up=True):
self.rank=rank #指的是牌面数字1-13
self.suit=suit #suit指的是花色
self.is_face_up=face_up #是否显示牌正面,true为正面,false为反面
#b.重写print()方法
def __str__(self):
if self.is_face_up:
rep=self.suit+self.rank
else:
rep='XX'
return rep
#c.翻牌的方法:
def flip(self):
self.is_face_up=not self.us_face_up
#d.牌的顺序号
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
#2.Hand类
class Hand():
#a.构造函数即初始化
def __init__(self):
self.cards=[]
#b.重写print()方法
def __str__(self):
if self.cards:
rep=''
for card in self.cards:
rep+=str(card)+'\t'
else:
rep='无牌'
return rep
#c.清空牌手手里的牌
def clear(self):
self.cards=[]
#d.增加牌手手里的牌
def add(self,card):
self.cards.append(card)
#e.把一张牌给别的牌手
def give(self,card,other_hand):
self.cards.remove(card)
other_hand.add(card)
#3.Poke类
class Poke(Hand):
#a.生成一副牌
def populate(self):
for suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank,suit))
#b.洗牌
def shuffle(self):
import random
random.shuffle(self.cards)
#c.发牌,发给玩家,每人默认13张
def deal(self, hands, per_hand = 13):
for rounds in range(per_hand):
for hand in hands:
if self.cards:
top_card = self.cards[0]
self.cards.remove(top_card)
hand.add(top_card)
else:
print("Can't continue deal. Out of Cards!")
#4.主程序
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)
#显示四位牌手手牌
n=1
for hand in players:
print("牌手",n,end=":\n")
print(hand)
n=n+1
input("\nPress the enter key to exit.")
二、运行代码(F5) 结果如下
This is a module with classes for playing cards
牌手 1:
梅9 梅4 梅Q 红7 梅A 方8 红2 黑K 方J 方Q 方10 红J 黑6
牌手 2:
黑4 红8 黑3 黑7 黑Q 方2 梅8 梅5 黑A 方A 黑2 方7 方5
牌手 3:
梅6 方6 红K 红9 黑J 方9 梅10 方K 梅7 黑9 方4 黑10 梅2
牌手 4:
红4 方3 红6 红Q 红10 红5 黑8 梅K 梅3 梅J 黑5 红A 红3
Press the enter key to exit.
我依旧真诚待人