本文主要运用Python里面类的应用,以及一些基础的算法逻辑,实现了下面的代码,可以对四位玩家随机发牌,但是没有大小王,一共52张牌,包括数字与花色。
结果图为:
# Cards Module
class 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 # 是否显示牌的正面,True为正面,False为背面
def __str__(self):
if self.is_face_up:
rep=self.suit+self.rank
else:
rep="XX"
return rep
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
def flip(self): # 翻牌方法
self.is_face_up=not self.is_face_up
class Hand():
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)
# Poke类
class Poke(Hand): # 生成一副牌
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:
if self.cards:
top_card=self.cards[0]
self.cards.remove(top_card)
hand.add(top_card)
else:
print("不能继续发牌了,牌已经发完了!")
# 主程序
if __name__=="__main__":
print("This is a module with classer for playing cards.")
# 4个玩家
players=[Hand(),Hand(),Hand(),Hand()]
pokel=Poke()
pokel.populate() # 生成一副牌
pokel.shuffle() # 洗牌
pokel.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.")
大家喜欢的话多多点赞收藏
+Q2225811680获取各种计算机方面的电子书