当前位置: 首页 > news >正文

鞍山网站网站建设做一个交易平台网站的成本

鞍山网站网站建设,做一个交易平台网站的成本,如何自己开发软件挣钱,如何注册免费企业邮箱1. 游戏规则概述 玩家人数:3人 牌数:一副扑克牌,共54张(包括大小王) 发牌:每人17张牌,剩余3张作为底牌 出牌规则:玩家依次出牌,必须出比上家更大的牌型,或者选…

 

 1. 游戏规则概述
玩家人数:3人
牌数:一副扑克牌,共54张(包括大小王)
发牌:每人17张牌,剩余3张作为底牌
出牌规则:玩家依次出牌,必须出比上家更大的牌型,或者选择不出
胜利条件:先出完手中牌的玩家获胜

2. 游戏框架设计

2.1 牌型定义

class Card:
    def __init__(self, suit, rank):
        self.suit = suit  # 花色:♠, ♥, ♣, ♦
        self.rank = rank  # 牌面:3, 4, 5, ..., K, A, 2, Joker

    def __str__(self):
        return f"{self.suit}{self.rank}"
 

2.2 牌堆和发牌

import random

class Deck:
    def __init__(self):
        suits = ['♠', '♥', '♣', '♦']
        ranks = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
        self.cards = [Card(suit, rank) for suit in suits for rank in ranks]
        self.cards.append(Card('Joker', 'Black'))
        self.cards.append(Card('Joker', 'Red'))
        random.shuffle(self.cards)

    def deal(self, num_players):
        hands = [[] for _ in range(num_players)]
        for i in range(17):
            for j in range(num_players):
                hands[j].append(self.cards.pop())
        return hands, self.cards[:3]  # 返回手牌和底牌
 

2.3 玩家类

class Player:
    def __init__(self, name):
        self.name = name
        self.hand = []

    def play_card(self, card_indices):
        played_cards = [self.hand.pop(i) for i in sorted(card_indices, reverse=True)]
        return played_cards

    def __str__(self):
        return f"{self.name}: {', '.join(str(card) for card in self.hand)}"

 2.4 游戏逻辑

class Game:
    def __init__(self, players):
        self.deck = Deck()
        self.players = [Player(name) for name in players]
        self.hands, self.bottom_cards = self.deck.deal(len(players))
        for i, player in enumerate(self.players):
            player.hand = self.hands[i]
        self.current_player = 0
        self.last_played = []

    def next_player(self):
        self.current_player = (self.current_player + 1) % len(self.players)

    def play_round(self):
        player = self.players[self.current_player]
        print(player)
        card_indices = input("选择要出的牌(用逗号分隔):").split(',')
        card_indices = [int(i) for i in card_indices]
        played_cards = player.play_card(card_indices)
        self.last_played = played_cards
        print(f"{player.name} 出了:{', '.join(str(card) for card in played_cards)}")
        self.next_player()

    def start(self):
        while all(len(player.hand) > 0 for player in self.players):
            self.play_round()
        winner = [player for player in self.players if len(player.hand) == 0][0]
        print(f"{winner.name} 赢了!")

3. 运行游戏

if __name__ == "__main__":
    players = ["Alice", "Bob", "Charlie"]
    game = Game(players)
    game.start()

 

以下是将所有代码合并在一起的完整版本。


import random

class Card:
    def __init__(self, suit, rank):
        self.suit = suit  # 花色:♠, ♥, ♣, ♦
        self.rank = rank  # 牌面:3, 4, 5, ..., K, A, 2, Joker

    def __str__(self):
        return f"{self.suit}{self.rank}"

class Deck:
    def __init__(self):
        suits = ['♠', '♥', '♣', '♦']
        ranks = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
        self.cards = [Card(suit, rank) for suit in suits for rank in ranks]
        self.cards.append(Card('Joker', 'Black'))
        self.cards.append(Card('Joker', 'Red'))
        random.shuffle(self.cards)

    def deal(self, num_players):
        hands = [[] for _ in range(num_players)]
        for i in range(17):
            for j in range(num_players):
                hands[j].append(self.cards.pop())
        return hands, self.cards[:3]  # 返回手牌和底牌

class Player:
    def __init__(self, name):
        self.name = name
        self.hand = []

    def play_card(self, card_indices):
        played_cards = [self.hand.pop(i) for i in sorted(card_indices, reverse=True)]
        return played_cards

    def __str__(self):
        return f"{self.name}: {', '.join(str(card) for card in self.hand)}"

class Game:
    def __init__(self, players):
        self.deck = Deck()
        self.players = [Player(name) for name in players]
        self.hands, self.bottom_cards = self.deck.deal(len(players))
        for i, player in enumerate(self.players):
            player.hand = self.hands[i]
        self.current_player = 0
        self.last_played = []

    def next_player(self):
        self.current_player = (self.current_player + 1) % len(self.players)

    def play_round(self):
        player = self.players[self.current_player]
        print(player)
        card_indices = input("选择要出的牌(用逗号分隔):").split(',')
        card_indices = [int(i) for i in card_indices]
        played_cards = player.play_card(card_indices)
        self.last_played = played_cards
        print(f"{player.name} 出了:{', '.join(str(card) for card in played_cards)}")
        self.next_player()

    def start(self):
        while all(len(player.hand) > 0 for player in self.players):
            self.play_round()
        winner = [player for player in self.players if len(player.hand) == 0][0]
        print(f"{winner.name} 赢了!")

if __name__ == "__main__":
    players = ["Alice", "Bob", "Charlie"]
    game = Game(players)
    game.start()
```

### 运行说明
1. 将上述代码复制到一个Python文件中,例如`paton_doudizhu.py`。
2. 在命令行中运行该文件:`python paton_doudizhu.py`。
3. 游戏会提示每个玩家出牌,玩家需要输入要出的牌的索引(用逗号分隔)。
4. 游戏会持续进行,直到有一个玩家出完所有手牌,该玩家即为胜利者。

 

http://www.dtcms.com/a/482313.html

相关文章:

  • 幂等机制
  • 2025.10月报 Cherry Stuido 1.6.4、Ollama 0.12.5、Dify 1.9.1升级使用摘要
  • 抗衰≠智商税:WJCZ(唯诺因)麦角硫因的细胞级抗衰技术解析
  • 做团购网站有什么难处百度联盟官网
  • 栈与队列相关知识以及算法题
  • 网站制作 wordpress游戏门户网站 织梦
  • 【第五章:计算机视觉-计算机视觉在工业制造领域中的应用】1.工业缺陷分割-(2)BiseNet系列算法详解
  • CNC 加工中的 GLTF 文件:连接设计与制造
  • 02117 信息组织【第一章】
  • rust主要用于哪些领域
  • 【OpenHarmony】分布式文件服务模块架构
  • 具身智能数据采集高校实训方案:开启机器人教育实训新篇章
  • C++中std::forward_iterator_tag 和 std::ptrdiff_t使用详解
  • 网站建设的基本因素是什么东莞模板网站
  • k8s具体安装步骤
  • 无代码网站开发上海谷歌推广
  • 48.文本预处理:给文字数据洗个澡
  • 宠物智能用品:当毛孩子遇上 AI,是便利还是过度?
  • ESP32 想提高传输速度该如何解决?
  • 百度网站网址是什么网站设计网页版
  • 公司网站留言板网站建立不安全怎么设置通过
  • 启动监控页面监控vllm,大模型,显存的占用情况
  • JavaWeb中字节流与字符流的本质区别
  • 从代码实现到概念创新:AIGC如何重塑数据可视化的价值链条?
  • ONLYOFFICE 前端实现历史记录存储与多人协作完整指南
  • 操作系统准备(UOS)
  • 不想折腾环境?如何最快用上MySQL 8.0?
  • [Dify] 插件输入参数配置详解:让 Agent 能正确理解与填写请求参数
  • 海外网站建设网站登录密码保存在哪里设置
  • 电子商务网站建设的定义网站建设包括哪些东西