Как добавить правильные карты в основную колоду МТГ?

Я делаю программу на питоне, просто для удовольствия, которая создаст основную магию: колода сбора.
Основной тест на данный момент заключается в том, сможет ли он создать легальную mtg-колоду, которая подойдет новичкам.

'''a mtg deck designer'''
from collections import Counter
import mtgsdk.card as card

colors = ['black']
#colors = input("What are your colors?").split(', ')
ncolors = len(colors)
ncards = 60
#ncards = int(input("how many cards?"))
mytype = 'Vampire'
#mytype = input('what creature type should the deck be based on?')

def myrange(l):
    '''create an assignable array with l pieces'''
    result = []
    i = 0
    while i != l:
        result.append(i)
        i += 1
    return result

def add(grp, queryresult):
    '''add queryresult[0] to grp'''
    try:
        grp += [queryresult[0]]
    except IndexError:
        '''help!'''

def figure_out_basic_land(clr):
    '''figure out the basic land name of a given color'''
    if clr.lower() == 'colorless':
        return 'Waste'
    if clr.lower() == 'white':
        return 'Plains'
    if clr.lower() == 'blue':
        return 'Island'
    if clr.lower() == 'black':
        return 'Swamp'
    if clr.lower() == 'red':
        return 'Mountain'
    if clr.lower() == 'green':
        return 'Forest'
    return 0

def d1():
    '''first portion of debugging message'''
    print('getting cards', end='...')

def d2():
    '''second portion of debugging message'''
    print('done.')

def construct():
    '''the actual deck-constructing function'''
    #define groups
    basiclands = []
    lowcostcreatures = []
    highcostcreatures = []
    lowcostspells = []
    highcostspells = []
    #assign cards to groups
    for i in colors:
        d1()
        add(basiclands, card.Card.where(types='land').where(supertypes='Basic').where(name=figure_out_basic_land(i)).all())
        d2()
        d1()
        add(lowcostcreatures, card.Card.where(types='creature').where(subtypes=mytype).where(colors=i).where(cmc='1').all())
        add(lowcostcreatures, card.Card.where(types='creature').where(subtypes=mytype).where(colors=i).where(cmc='2').all())
        d2()
        d1()
        add(lowcostspells, card.Card.where(types='instant').where(text=mytype).where(colors=i).where(cmc='1').all())
        add(lowcostspells, card.Card.where(types='sorcery').where(text=mytype).where(colors=i).where(cmc='2').all())
        d2()
        d1()
        add(highcostcreatures, card.Card.where(types='creature').where(subtypes=mytype).where(colors=i).where(cmc='3').where(rarity='rare').all())
        add(highcostcreatures, card.Card.where(types='creature').where(subtypes=mytype).where(colors=i).where(cmc='4').where(rarity='rare').all())
        d2()
        d1()
        add(highcostspells, card.Card.where(types='instant').where(subtypes=mytype).where(colors=i).where(cmc='3').where(rarity='rare').all())
        add(highcostspells, card.Card.where(types='sorcery').where(subtypes=mytype).where(colors=i).where(cmc='4').where(rarity='rare').all())
        d2()
        print()
    #put results into card suggestion pool
    cards = [lowcostcreatures,highcostcreatures,lowcostspells,highcostspells,basiclands]
    #define deck
    deck = []

    #figure out how to get the cards into the deck in sets of 4, with almost correct numbers of each group (30% lowcost,30% highcost,40% land)

    if len(deck) > (ncards):
        while en(deck) > (ncards):
            del deck[-1]
    if len(deck) != ncards:
        print('warning: card num = {0}'.format(len(deck)))
    return deck

Вопрос: пока что construct функция возвращает [] потому что ничего не было добавлено к этому. Мне интересно, как добавить наборы из 3 или 4 (плюс 40% основных земель) карты в deck так что это массив ncardsCard экземпляры, следующие за процентами, указанными ниже. Что-то, что нужно запомнить! Иногда в группе недостаточно карт, и нужно добавить неиспользованные карты других групп, чтобы осталось 60 карт. Кроме того, количество карт в колоде может варьироваться, поэтому я использую проценты в описании проблемы.

Характеристики:

  1. В будущем программа будет использовать машинное обучение, но я еще не в этом месте, поэтому я просто пытаюсь получить 15% недорогих существ, 15% дорогих существ, 15% недорогих заклинаний не существа, 15% дорогостоящих заклинаний не существа, 40% основных земель.
  2. Конечно, не стесняйтесь комментировать мои проценты, я не совсем профессиональный mtg игрок, и хотел бы получить бесплатный совет / полезную критику!
  3. Наконец, если вы видите какие-либо другие проблемы с кодом, не молчите! Я хотел бы получить всю возможную помощь!

0 ответов

Другие вопросы по тегам