- 代码:
import random
class Card:
card_color = ['黑', '片', '桃', '花']
card_number = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
card_king = ['RJ', 'BJ'] # RJ:red joker,BJ:black joker
list1=[]
@classmethod
def fen(cls):
for color in Card.card_color:
for number in Card.card_number:
Card.list1.append(color+number)
# 添加大小王
Card.list1.append(Card.card_king)
Card.fen()
class Player:
def __init__(self,name):
self.name = name
self.list = random.sample(Card.list1,17)
for i in self.list:
Card.list1.remove(i)
def show(self):
print(f"玩家{self.name}拥有的牌为{self.list}")
class Play:
player_A = Player('A')
player_B = Player('B')
player_C = Player('C')
def deal(self):
print('发牌结束')
Play.player_A.show()
Play.player_B.show()
Play.player_C.show()
def transform(self):
choice = random.randint(1,2)
if choice == 1:
temp = Play.player_A.list
Play.player_A.list = Play.player_B.list
Play.player_B.list = Play.player_C.list
Play.player_C.list = temp
elif choice == 2:
temp = Play.player_A.list
Play.player_A.list = Play.player_C.list
Play.player_C.list = Play.player_B.list
Play.player_B.list = temp
print('换牌结束')
Play.player_A.show()
Play.player_B.show()
Play.player_C.show()
new_game = Play()
new_game.deal()
new_game.transform()
- 截图:
3.分析:
Card 类
Card 类定义了三个类变量:card_color(花色)、card_number(点数和 card_king(大小王)。
Card 类有一个类方法 fen,用于生成一副扑克牌(不包括大小王)。但是,这里一个问题:在添加大小王时,它错误地将整个 card_king 列表作为单个元素添加到 list1 中,而不是将 card_king 中的每个元素单独添加。
Player 类
Player 类初始化时接收一个 name 参数,并随机从 Card.list1 中抽取 17 张给玩家。
抽取牌后,它会从 Card.list1 中移除已抽取的牌。
Player 类还有一个 show 方法,用于打印玩家手中的牌。
Play 类
Play 类中有三个玩家对象 player_A、player_B 和 player_C,它们都在类定义时就被初始化。
Play 类有一个 deal 方法,用于发牌并显示每个玩家手中的牌。
Play 类还有一个 transform 方法,用于随机交换两个玩家手中的牌。
最后创建对象,并且调用deal和transform方法