В настоящее время я работаю над своим последним проектом в школе, поэтому я делаю игру с помощью pygame. В игре есть доска с базами, колониями и обороной, все это спрайтовые объекты. В проекте нас попросили добавить 2 алгоритма машинного обучения, чтобы один из них был минимаксным. как вы, наверное, знаете, чтобы использовать минимакс, вам нужно copy.deepcopy
доску пару раз и вычислить значение huristi c каждой платы и найти лучшие доски при максимальном значении и худшие при минимальном.
Проблема, с которой я столкнулся, заключается в том, что copy.deepcopy
, вероятно, не может работать с объектом, имеющим атрибуты спрайта. Это сообщение об ошибке, которое появляется:
TypeError: не удается обработать объекты pygame.Surface
, и он обращается к этой строке в моем коде:
b = copy.deepcopy (Board)
Я действительно не знаю, что делать в этой ситуации, я не могу go вернуться и заменить плату, потому что У меня около 1700 строк кода + готовая графика, и изменение всех объектов на объекты без спрайтов - это слишком много. так что мне очень нужна ваша помощь, нужно понять это, чтобы продолжить
вот пример одной строки на доске в начале игры; просто чтобы помочь вам понять, о чем я говорю:
[Нет, «<» Спрайт колонии (в 2 группах) «>», Нет, Нет, Нет, Нет, Нет, Нет, None, None, None, None, None, None, None, None, None, None, "<" спрайт колонии (в 2 группах) ">", None]
пример для колонии класс, связанный со спрайтом код в последнем абзаце:
class Colony(pg.sprite.Sprite):
def __init__(self, x, y, clan, type):
self.clan = clan
if self.clan == 1:
name = "joogadars"
else:
name = "klagars"
self.type = type
if type == 1:
type_name = "doorks"
else:
type_name = "gorgs"
self.lvl = 1
self.attackable = True
self.rates = array_from_txt_colonies("Colonies Data.txt", self.type, 'Rates')
self.prices = array_from_txt_colonies("Colonies Data.txt", self.type, 'Prices')
self.hps = array_from_txt_colonies("Colonies Data.txt", self.type, 'Hps')
self.hp = self.hps[self.lvl - 1]
self.rate = self.rates[self.lvl - 1]
self.position = (x, y)
full_name = type_name + '/' + name + '/' + name + " " + type_name + " colony lvl " + str(self.lvl) + " use.png"
pg.sprite.Sprite.__init__(self)
img = 'C:/Users/ariel/Desktop/Ariel/12th/Python/final proj/graphics/islands/colonies/' + full_name
self.image = pg.image.load(img)
self.rect = self.image.get_rect(center=self.position)