【问题标题】:python card game track winners蟒蛇纸牌游戏赛道获奖者
【发布时间】:2015-05-17 06:07:55
【问题描述】:

大家好,我刚开始学习 python 并遇到一个问题: 我正在为纸牌游戏 Whistful Hearts 编写代码。 本游戏共13轮,4人,每人出牌,牌高者获胜,胜者领先下一轮。 所以如果第一轮的顺序是1234,打出的牌是[2,3,10,A] 所以玩家4赢了第一轮,下一轮的顺序是4123,出牌是[5,1,8,Q]。我只是想知道如何跟踪哪个玩家打出哪张牌,例如在第二轮玩家 4 打出 5,玩家 1 打出 1...等等,以及每轮的顺序,谁先玩,第二个.. 。 ETC。 如果不够清楚,我很抱歉:(

【问题讨论】:

    标签: python


    【解决方案1】:

    你可以使用一个元组列表,每个元组的第一个元素是玩家编号,第二个元素是打出的牌,例如

    round1 = [(1, 2), (2, 3), (3, 10), (4, 'A')]
    round2 = [(4, 5), (1, 1), (2, 8), (3, 'Q')]
    

    然后您将有一个回合列表来代表一场比赛的 13 回合:

    rounds = [[(1, 2), (2, 3), (3, 10), (4, 'A')],
              [(4, 5), (1, 1), (2, 8), (3, 'Q')],
              ...
              [(3, 2), (4, 10), (1, 'K'), (2, 'J')]
    

    也可以只记录每轮领先的球员编号,因为假设比赛总是朝着同一个方向进行,剩下的球员可以从第一个 .您可以使用自定义类、命名元组或什至将领先玩家存储在每个回合列表的第一个元素中来实现这一点,但我认为这会比它需要的复杂一点。

    附:标准牌组中没有1 牌。

    【讨论】:

    • 最简单的方法可能是player_list = [1, 2, 3, 4] * 2,然后for player in player_list[starting_player_idx : starting_player_idx+4]: play()
    • @AdamSmith:也许吧。也许你应该充实它并将其添加为答案?
    • 不,我认为这超出了问题的范围。 OP 似乎需要知道如何存储历史数据,您的回答很好地呈现了这些数据。他从不问如何获得本轮球员名单!
    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多