Текстовая игра Python: как сделать функцию сохранения?

Я в процессе создания текстовой игры с Python, и у меня есть общая идея. Но я собираюсь сделать игру в глубину до такой степени, что для ее завершения потребуется больше одного сидения. Поэтому я хочу иметь возможность сделать игру до того места, где при выходе она сохранит список переменных (здоровье игрока, золото, место и т. Д.) В файл. Затем, если плеер хочет загрузить файл, они переходят в меню загрузки и загружают файл.

В настоящее время я использую версию 2.7.5 Python, и я нахожусь в Windows.

Заранее спасибо. 🙂

  • Ускорьте программу, которая вычисляет среднее значение соседей в огромном массиве
  • Как читать целые числа из файла, который является 24-битным и маленьким, с использованием Python?
  • оси для участка рассеяния не удерживаются в matplotlib
  • Почему bool является подклассом int?
  • Каков самый простой способ обнаружения ввода клавиатуры в python с терминала?
  • загрузка ошибки с помощью nltk.download ()
  • Django: добавить изображение в ImageField из URL-адреса изображения
  • Патч __call__ функции
  • 4 Solutions collect form web for “Текстовая игра Python: как сделать функцию сохранения?”

    Если я правильно понял вопрос, вы спрашиваете о способе сериализации объектов. Самый простой способ – использовать стандартный рассол для модулей:

    import pickle player = Player(...) level_state = Level(...) # saving with open('savefile.dat', 'wb') as f: pickle.dump([player, level_state], f, protocol=2) # loading with open('savefile.dat', 'rb') as f: player, level_state = pickle.load(f) 

    Стандартные объекты Python и простые классы с любым уровнем вложенности могут быть сохранены таким образом. Если в ваших классах есть некоторые нетривиальные конструкторы, может возникнуть необходимость намекнуть pickle в том, что на самом деле нужно сохранить, используя соответствующий протокол .

    Во-первых, не переусердствуйте. Вам не нужно ничего использовать. В качестве предварительного шага исследуем ввод / вывод основных файлов в python.

    Во-вторых, я предполагаю, что у вас есть игровой класс в вашей игре? Или, возможно, общий класс, который отслеживает состояние игры. Хорошо, чтобы значения класса хранилища по умолчанию для ваших переменных, таких как здоровье, золото и т. Д. Затем у вас есть способ, который может изменить этот класс, например def load_stats(player): или def load_stats(game): что-то. и прочитать его из файла сохранения, который может иметь любой формат, который вам нравится, и изменять переменные состояния вашего игрока / игры.

    Сначала проверьте загрузку игровых файлов и убедитесь, что вы можете получить их так, чтобы ваш класс игрока изменился.

    Тогда все, что вам нужно сделать, это добавить функцию сохранения игр, которая позволяет вывести эти переменные обратно в файл в вашей системе каталогов где-нибудь.

    Попробуйте сделать это и сообщите мне, если вам понадобится помощь после этого.

    Чтобы добавить к ответу Богдана, проще понять, как просто хранить словарь со всеми вашими данными. Поэтому, если у вас есть это:

     import pickle data = {'health':100, 'gold': 1560, 'name': 'mariano'} 

    вы просто сделали бы:

     with open('savefile', 'w') as f: pickle.dump(data, f) with open('savefile') as f: data = pickle.load(f) 

    и он должен загружаться.

    Я думаю, вы можете просто использовать txt-файл для записи вещей, которые вам нужны в игре, просто используйте функцию file () и open (). Или вы можете использовать модуль sqlite3 в python для сохранения вашей записи. просто попробуй :

    импортировать sqlite3

    holp, который помогает. 🙂

    вот пример использования sqlite3 в python:

    просто измените, как вы хотите сохранить файл:

      import sqlite3 cx=sqlite3.connect("stu.db") # get a connect object cu=cx.cursor() # get a cursor cu.execute("""create table stu ( number char(10) primary key not null, name char(10) not null, sex int not null default 1 check (sex in (1,0)), major char(5) not null, mark int not null, birthday datetime not null )""") cu.execute("insert into stu values ('010011','Jim',1,'computer',58,'1989-01-01')") cu.execute("insert into stu values ('080011','Jimmy',1,'computer',59,'1990-02-25')") cu.execute("insert into stu values ('080001','Jack',1,'computer',58,'1989-10-01')") cu.execute("insert into stu values ('081102','Zimmer',1,'computer',60,'1990-01-01')") cu.execute("insert into stu values ('081103','Hans',1,'computer',58,'1991-2-08')") cu.execute("insert into stu values ('090210','Lily',0,'computer',58,'1990-05-31')") cu.execute("insert into stu values ('090125','Mary',0,'computer',59,'1992-07-08')") cu.execute("insert into stu values ('080136','Tom',1,'computer',58,'1989-01-01')") cu.execute("insert into stu values ('090012','Lisa',0,'software',59,'1990-04-05')") cu.execute("insert into stu values ('080028','Lee',0,'software',58,'1990-05-07')") cx.commit()# commit the sql cu.execute("select * from stu") #get the all records cu.fetchone() # fetch one cu.execute("select mark from stu where name='Jim'") cu.execute("""select name= case when mark >55 and mark<60 then 'ok' when mark=60 then 'good' else 'unkown' end from stu""") cu.execute("""update stu set major='software' where name='Jim' """)# update one cu.execute("""select min(mark) from stu""")#get the min cu.execute("select count(*) from stu") #get the number of stu cu.execute("select avg(mark) from stu") #get ave cu.execute("select * from stu where name='Jim'")#look jim cu.execute("select * from stu where mark=60") cu.execute("select * from stu where name like 'Li__'") cu.execute("select * from stu where Birthday not between '1989-01-01' and '1989-12-31'") cx.commit() res=cu.fetchall()#get all #cu.fetchone() for i in res: print i cu.close() cx.close() 

    Или я думаю, если ваша игра не очень сложная, просто используйте функцию file ().

    Python - лучший язык программирования в мире.