В настоящее время я строю проект, который позволяет симулировать игру Magic The Gathering, чтобы я мог видеть, как часто я беру определенные карты и сколько времени требуется, чтобы выиграть матч - то есть сократить жизнь противника с 20 до 0Код, который я использую сейчас, использует ООП для отдельных карт и отдельных колод.Они импортируются в основной фрагмент кода - проект находится на GitHub по адресу https://github.com/jimbob88/MTG. Card.py:
class Card:
"""Define MTG Card"""
def __init__(self, name, cc, supertype):
"""(Card, int, str) -> Nonetype"""
self.name = name; self.cc = cc; self.supertype = supertype
self.cardData = [self.name, self.cc, self.supertype]
def __str__(self):
card_string = super().__str__()
return str(self.cardData)
Это простой класс, который хранит имя, стоимость приведения и типкарты.Он также содержит переменную - cardData - которая возвращает список с именем, стоимостью приведения и супертипом.Затем эти карты вводятся в виде списка в класс с именем Deck.Deck.py:
from random import shuffle; import csv
class Deck:
"""Define MTG Deck"""
def __init__(self, name, author, colour, cards):
self.name = name; self.author = author; self.colour = colour; self.cards = cards
self.hand = []; self.csvData = []
Класс Deck, который помещает этот список в переменную - self.cards.Колода также содержит переменные для названия колоды, автора колоды и цвета колоды.Наконец, у меня есть мой основной скрипт с именем MTG.py, который создает колоду, а не запускает ее - вот область, где я столкнулся с проблемой.MTG.py:
from Deck import *; from Card import *
dcards = []
while True:
#if input('End?') != 'end':
# continue
#else:
# break
userCardName = input('Card Name: ')
userCC = input('Converted Mana Cost(INT): ')
userSuperType = input('Card SuperType: ')
userAmount = input('Amount: ')
dcards.extend([[Card(userCardName, userCC, userSuperType).cardData(), userAmount]])
print(str(dcards))
end = input('End? ')
if end == 'y':
break
RedBurn = Deck('RedBurn','James Blackburn', 'Red',dcards)
Этот код имеет бесконечный цикл, который запрашивает у пользователей имя карты, стоимость разыгрыша, Супертип и количество этих карт.Затем он вводит это в класс - Card (userCardName, userCC, userSuperType) - в списке с cardData.Затем он продолжает повторять этот процесс, пока цикл не будет разорван.После этого он помещает все полученные пользователем данные в класс Deck. Моя задача - следующий этап разработки - разрешить раздачу карт и основные правила, которые к этому применяются.По сути, каждый ход можно разыгрывать только одну землю, и если я хочу разыграть, например, существо, мне нужно выбрать тип земли.Таким образом, чтобы использовать тип земли, его нельзя использовать снова.До следующего хода.Моя идея исправить это состояла в том, чтобы вводить каждую карту как объект, а не как список, чтобы у меня была отдельная переменная self.variable внутри этого объекта с именем isTapped.
dcards.extend([[Card(userCardName, userCC, userSuperType), userAmount]])
Хотя это приводит к отображению картыas - <Card.Card object at 0x7f8dad97f630>
- выделение памяти не соответствует фактическому значению.Кто-нибудь знает, как я могу это сделать, любая помощь в других частях кода будет признателен, заранее спасибо, Джеймс Блэкберн.