Я делаю редактор уровней защиты башни, используя pygame, и мне нужно иметь возможность сохранить карту, созданную пользователем до сих пор, если пользователь нажимает кнопку «Сохранить». В настоящее время я просто пытаюсь реализовать «сохранение» на вышках, так как это все, что делает приложение. Итак, у меня есть список с именем towers
, содержащий объекты башни из класса Tower()
. Я попытался выбрать отдельные объекты башни, но это не сработало.
towers = [Tower(), Tower()]
def save_towers(self, towers):
with open("game_data.picle", "wb") as tower_data:
for tower in towers:
pickle.dump(tower, tower_data)
if user_pressed_save():
save_towers()
Затем я попытался выбрать весь список, но это не сработало либо
with open("game_data.picle", "wb") as tower_data:
pickle.dump(towers, tower_data)
Они оба выдают одну и ту же ошибку:
pickle.dump(towers, tower_data)
TypeError: cannot pickle 'pygame.Surface' object
Но ни один из них не является пигмеем. Поверхность. Что я делаю неправильно? Кроме того, пожалуйста, дайте мне знать, если есть лучший способ сделать это, так как я впервые делаю настоящую программу.
Редактировать: Что-то, на что я чувствовал, стоит упомянуть: Следующий attriburte находится в классе башни, но я не понимаю, как это может вызвать ошибку self.tower = pygame.Surface((self.size)).convert()