Проблемы с загрузкой файла JSON в код ООП в приключении на питонеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с загрузкой файла JSON в код ООП в приключении на питоне

Сообщение Anonymous »

Я пишу текстовое приключение на Python, используя объектно-ориентированные функции, такие как классы и наследование. Текущее состояние кода работает, но когда я сохраняю игру в формате JSON, а затем загружаю ее обратно в классы, получаю неожиданные результаты. В частности, ObjectDoor загружается как Object базового класса. Это одна конкретная дверь, другая дверь работает нормально, когда я манипулирую ею из загруженной игры, но я не могу понять, где я ошибся.
Я использовал json библиотека для преобразования классов в словари. вот пример моего кода.

Код: Выделить всё

    def save_game(self, filename="savegame.json"):
"""Save the game state to a JSON file."""
game_state = {
"player": self.player.to_dict(),
"locations": {name: loc.to_dict() for name, loc in self.locations.items()},
"objects": {name: obj.to_dict() for name, obj in self.allobjects.items()},
"current_location": self.current_location.name
}
with open(filename, "w") as file:
json.dump(game_state, file, indent=4)

print(self.wrap_text(f"{Color.OKGREEN}Game saved successfully!{Color.ENDC}"))

def load_game(self, filename="savegame.json"):
"""Load the game state from a JSON file."""
try:
with open(filename, "r") as file:
game_state = json.load(file)
self.player = Player.from_dict(game_state["player"])
self.locations = {name: Location.from_dict(loc) for name, loc in game_state["locations"].items()}
self.allobjects = {name: Object.from_dict(obj) for name, obj in game_state["objects"].items()}
self.current_location = self.locations[game_state["current_location"]]

# Ensure other_side attribute is correctly set for ObjectDoor objects
for obj in self.allobjects.values():
if isinstance(obj, ObjectDoor):
obj.other_side = self.allobjects.get(obj.other_side)

print(self.wrap_text(f"{Color.OKGREEN}Game loaded successfully!{Color.ENDC}"))
self.do_short_look("")

except (FileNotFoundError, json.JSONDecodeError):
print(self.wrap_text(f"{Color.FAIL}Failed to load the game. Save file may not exist or be corrupted.{Color.ENDC}"))
Вам, вероятно, придется посмотреть на код по адресу https://github.com/bjmcgill/quest-of-the-mesteries, чтобы увидеть этот код более подробно. Я загрузил самые последние изменения в главной ветви. По какой -то причине я не мог удалить более раннюю основную филиал. Но я просто не мог найти, где находится ошибка. Это было бы намного проще, если бы я сохранил свои структуры данных в качестве словари, а не как классы. Я использовал Copilot для многих функций, но я узнал, что он сделал человеческие ошибки, поэтому мне пришлось отлаживать его более или менее вручную.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/793 ... -adventure
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблемы с загрузкой файла json в код ООП в текстовом приключении Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с загрузкой файла JSON в код ООП в приключении Python Text [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • C++, как я могу уменьшить повторяющийся код с помощью шаблонов и/или ООП? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Разница между загрузкой и загрузкой в Ларавеле
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Код на основе терминала на питоне поднимает: [Errno 22] Неверный аргумент
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»