python斗地主换牌————初学

这个是代码显示,结果在后面
import random as r

class Game:
    def __init__(self):
        self.poker_cards = [
                "♠A", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", " ♠9 ", "♠10", "♠J", "♠Q", "♠K",
                "♥A", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K",
                "♣A", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K",
                "♦A", "♦2", "♦3", "♦4", "♦5", "♦6", "♦7", "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K", "RJ", "BJ"
            ]
        r.shuffle(self.poker_cards)

    def initial_deal(self):
        player1 = r.sample(self.poker_cards, 17)
        for card in player1:
            self.poker_cards.remove(card)

        player2 = r.sample(self.poker_cards, 17)
        for card in player2:
            self.poker_cards.remove(card)

        player3 = self.poker_cards

        return player1, player2, player3

    def exchange_cards(self, player1, player2, player3):
        temp = player1
        player1 = player2
        player2 = player3
        player3 = temp
        return player1, player2, player3

class Player:
    def __init__(self, name, cards):
        self.name = name
        self.cards = cards

# 创建游戏实例
game = Game()

# 发牌
player1, player2, player3 = game.initial_deal()
a = Player("A", player1)
b = Player("B", player2)
c = Player("C", player3)

print("初始牌")
print(a.name, ":", a.cards)
print(b.name, ":", b.cards)
print(c.name, ":", c.cards)

# 换牌
player1, player2, player3 = game.exchange_cards(player1, player2, player3)
a.cards = player1
b.cards = player2
c.cards = player3
print("换牌后")
print(a.name, ":", a.cards)
print(b.name, ":", b.cards)
print(c.name, ":", c.cards)

结果展示:

代码首先定义了一个Game类和一个Player类,用于表示游戏和玩家。Game类包括了两个方法:initial_deal和exchange_cards。而Player类用于表示每个玩家,包括玩家的名称和手中的牌。

1..在Game类的initial_deal方法中,使用random模块对一副扑克牌进行洗牌并分发给三名玩家。每个玩家获得17张牌,同时从扑克牌堆中移除所发的牌。然后exchange_cards方法用于交换三名玩家的牌,但这里实际上只是简单地交换了指向玩家手牌列表的引用,并没有真正交换牌。

在实例化Game类后,通过调用initial_deal方法发牌,然后创建三个Player对象分别代表三名玩家。接着打印出初始的牌局情况,包括每位玩家的名称和手牌。然后调用exchange_cards方法进行牌的交换,并更新每位玩家的手牌。最后打印出交换牌后的情况。

一些可能的改进及注意事项包括:
- 在exchange_cards方法中确保真正交换玩家的牌,而不仅仅是交换引用。
- 使用更具描述性的变量名称,使代码更易读。
- 考虑处理牌堆中牌不足的情况,确保程序健壮性。
- 可以添加更多的游戏逻辑和功能,使游戏更加有趣和复杂。

这些改进可以提高代码的清晰性、可维护性和功能性。
 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值