#python
#python
Вопрос:
честно говоря, я понятия не имею, что я делаю, поэтому, если кто-то может помочь, это было бы очень ценно, я пытаюсь создать игру с сохранением, чтобы вы могли сохранить, а затем использовать load, и он прочитает файл и восстановит прогресс, но он не работает
bag=[""]
gold=0
weapon=["cool looking stick,1"]
level=1
savefile=input("what is you name")
load=input("would you like to load a previous save")
if load == "yes":
f = open(savefile "'s save.bag.txt", "r")
str(bag) == (f.read())
f.close()
f = open(savefile "'s save.gold.txt", "r")
str(gold) == (f.read())
f.close()
f = open(savefile "'s save.level.txt", "r")
level == (f.read())
f.close()
f = open(savefile "'s save.weapon.txt", "r")
str(weapon) == (f.read())
f.close()
else:
f = open(savefile "'s save.bag.txt", "w")
f.write(str(bag))
и т. д
Ответ №1:
Помимо того факта, что вы используете оператор сравнения равенства ==
вместо оператора присваивания =
для чтения, ваш код не будет работать ни с чем, кроме строк (поскольку это то, что вы получаете из f.read()
текстового файла).
Для сохранения структурированных данных в целом я бы рекомендовал использовать JSON, но для сохранения произвольных классов pickle
формат довольно идеален и проще.
Я изменил здесь все, чтобы сохранить все состояние проигрывателя в классе здесь:
- Метод
Player.load()
classmethod загружает объект из файла. (На самом деле это не подтверждает, что он загружает проигрыватель. Может быть любой объект.) - Метод
Player.save()
экземпляра сохраняет объект в файл с соответствующим именем.
import pickle
class Player:
def __init__(self, name):
self.name = name
self.bag = []
self.gold = 0
self.weapon = ["cool looking stick,1"]
self.level = 1
def save(self):
with open(self.name ".save", "wb") as f:
pickle.dump(self, f)
@classmethod
def load(cls, name):
with open(name ".save", "rb") as f:
return pickle.load(f)
name = input("what is your name?")
if input("would you like to load a previous save? [y/n]").lower().startswith("y"):
player = Player.load(name)
else:
player = Player(name)
player.save()
# e.g.:
player.level = 1
player.save()
Комментарии:
1. Спасибо, теперь мне просто нужно посмотреть итоговый обзор на pickle, и я должен быть хорошим