python---斗地主换牌

  1. 代码:

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']  # RJred jokerBJblack 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()

  1. 截图:

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_Aplayer_B 和 player_C,它们都在类定义时就被初始化。

Play 类有一个 deal 方法,用于发牌并显示每个玩家手中的牌。

Play 类还有一个 transform 方法,用于随机交换两个玩家手中的牌。

最后创建对象,并且调用deal和transform方法

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值