游戏王抽卡模拟器(概率计算器)

本文介绍了一款适用于游戏王的抽卡模拟器,可以作为概率计算器使用,支持DL、MD和实卡。用户需创建yaml文件定义牌组,程序将展示每回合各主题成功概率。
摘要由CSDN通过智能技术生成

给大家介绍一款功能强大但比较难用的抽卡模拟器,或者叫概率计算器,dl, md, 实卡都适用。

使用方法

1. 创建一个yaml文件,里面格式如下


deck:配置牌组
  size: 牌组卡牌总数
  cards:定义卡片
       卡牌名: 每张卡名字任意
            count: 重复次数(默认一张),-1代表根据牌组卡牌总数自动计算(只能有一个-1),
            attribute: 一个列表,定义赋予该卡的属性(标签)
                       属性内容自定义,例如怪兽卡、魔法卡,本家卡、泛用卡、手坑等等,均用字符串表示
       注意卡牌总数不要超过之前定义的size
  classes: 定义卡片的类型,每个class是一个类型,格式为
      类型名: 条件1 条件2 条件3 ...
            每个条件之间是逻辑与(&&)关系
            每个条件的格式必须是以下一种:
                1. 牌组(deck)中定义的卡牌名
                2. 定义在当前class之前的类型名 (例如class1已经定义,当前在定义class2,则定义class2时可以引用class1)
                3. a:属性  ->  要求该类型包含某种特定的属性
                4. A:属性(模糊匹配)  -> 要求该类型包含某种特定的属性,后面的表达式可以带*(匹配任意个任意字符)或?(匹配一个任意字符)
                5. !条件   ->  逻辑取反(要求后面跟的条件为假)
simulate: 模拟器配置
    count:模拟次数
    start_card: 初始手牌为多少张卡(默认5)
    turns: 模拟多少回合 (默认5)
    tests:列举想要关注的主题(例:展开、阻抗),每个主题之间互不相干
        主题名: 列举当前主题希望得到的手牌组合,每个组合之间是逻辑与(||)关系
            组合名: 定义一种希望满足的条件,列举需要的手牌
                - 手牌类型1 (引用deck定义的卡牌名或classes定义的类型名)
                ... 
                (注:当一张卡牌匹配了一种手牌类型之后,这张卡牌不会被用于匹配其他手牌类型,列举在前的手牌类型具有更高的优先级)

注:文档里请只写半角字符(不要写中文不然可能出错)


deck:
    size: 40
    cards:
        w-red:
            count: 3
            attribute: ['M', 'low', 'witches', 
制作一个世界之外游戏抽卡模拟器代码分为以下几个步骤: 1. 定义卡牌类(Card):卡牌类包含卡牌的属性,例如名称、稀有度、描述等。可以使用面向对象的方式定义一个Card类,并在构造函数中初始化卡牌的属性。 2. 定义抽卡池类(GachaPool):抽卡池类用于存储所有可抽取的卡牌,并提供随机抽取卡牌的方法。可以使用一个列表或字典来存储卡牌对象,并在抽卡方法中使用随机数生成器来随机选择一张卡牌。 3. 实现抽卡模拟器主程序:在主程序中,首先创建一个抽卡池对象,并将所有可抽取的卡牌添加到抽卡池中。然后,通过调用抽卡池的方法来模拟抽取卡牌的过程,并输出结果。 下面是一个简单的示例代码: ```python import random class Card: def __init__(self, name, rarity, description): self.name = name self.rarity = rarity self.description = description class GachaPool: def __init__(self): self.cards = [] def add_card(self, card): self.cards.append(card) def draw_card(self): if len(self.cards) > 0: return random.choice(self.cards) else: return None # 创建卡牌对象 card1 = Card("Card 1", "Common", "This is card 1") card2 = Card("Card 2", "Rare", "This is card 2") card3 = Card("Card 3", "Epic", "This is card 3") # 创建抽卡池对象并添加卡牌 gacha_pool = GachaPool() gacha_pool.add_card(card1) gacha_pool.add_card(card2) gacha_pool.add_card(card3) # 模拟抽卡过程 drawn_card = gacha_pool.draw_card() if drawn_card: print("You drew a", drawn_card.rarity, "card:", drawn_card.name) else: print("No cards available in the pool.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值