开发工具:pycharm
游戏介绍:四名牌手打牌,电脑随机将52张牌(不含大,小王)发给四名牌友,并将在屏幕上显示每位牌手的牌
程序设计步骤
1.设计类(Card,Hand,Poke)
2.主程序
一,设计类
1.Card
class 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 self.suit = suit self.is_face_up = face_up # 是否显示牌正面,True为正面,Flase为背面 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
2.Hand
class Hand(): 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)
3.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: 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张
参考代码
class 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 self.suit = suit self.is_face_up = face_up # 是否显示牌正面,True为正面,Flase为背面 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(): 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): 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/4463382/blog/3190473