Как добавить правильные карты в основную колоду МТГ?
Я делаю программу на питоне, просто для удовольствия, которая создаст основную магию: колода сбора.
Основной тест на данный момент заключается в том, сможет ли он создать легальную 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
так что это массив ncards
Card
экземпляры, следующие за процентами, указанными ниже. Что-то, что нужно запомнить! Иногда в группе недостаточно карт, и нужно добавить неиспользованные карты других групп, чтобы осталось 60 карт. Кроме того, количество карт в колоде может варьироваться, поэтому я использую проценты в описании проблемы.
Характеристики:
- В будущем программа будет использовать машинное обучение, но я еще не в этом месте, поэтому я просто пытаюсь получить 15% недорогих существ, 15% дорогих существ, 15% недорогих заклинаний не существа, 15% дорогостоящих заклинаний не существа, 40% основных земель.
- Конечно, не стесняйтесь комментировать мои проценты, я не совсем профессиональный mtg игрок, и хотел бы получить бесплатный совет / полезную критику!
- Наконец, если вы видите какие-либо другие проблемы с кодом, не молчите! Я хотел бы получить всю возможную помощь!