2013-05-24 3 views
4

Я сделал очень простую игру на питоне, используя pygame. Оценка основана на любом уровне, достигнутом игроком. У меня есть уровень как переменная, называемая score. Я хочу отобразить верхний уровень в начале или в конце игры.Сохранение рекорда для игры python

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

+0

Python 2 или Python 3? – Blorgbeard

+0

В чем проблема? что мешает вам делать 'print (score)'? – elyase

+0

2.7.4 и моя проблема в том, что я хочу, чтобы иметь возможность отображать счет снова после закрытия программы –

ответ

6

Я рекомендую вам использовать shelve. Например:

import shelve 
d = shelve.open('score.txt') # here you will save the score variable 
d['score'] = score   # thats all, now it is saved on disk. 
d.close() 

В следующий раз вы открываете использование программы:

import shelve 
d = shelve.open('score.txt') 
score = d['score']   # the score is read from disk 

и будет считана с диска. Вы можете использовать эту технику, чтобы сохранить список баллов, если хотите, таким же образом.

+0

Я думаю, что я получил его, моя единственная проблема в том, как я могу что-то определить с помощью «ключа», можете ли вы опубликовать краткую строку или две из того, как должен выглядеть файл .txt? –

+0

@KevinKlute, определить нечего, это просто работает, попробуйте! Ключевое имя «оценка» выбрано вами. Я мог бы использовать 'd ['saved_score']'.Конечно, чтобы получить его позже, вам нужно использовать то же имя, которое вы использовали для сохранения. Файл создается автоматически, но он не является текстовым форматом, является специальным форматом python для сохранения переменных. – elyase

+0

Я запустил ваш код, за исключением того, что я записал имя моего файла, и я получил ошибку «тип db не мог быть определен» извините за то, что вы так больно, но я действительно просто не могу это понять –

3

Я родом из фона Java, и мой Python не велик, но я хотел бы посмотреть в документации Python на чтение и запись файлов: http://docs.python.org/2/tutorial/inputoutput.html

Вы можете написать переменную оценка в незашифрованном файле прежде чем вы закончите игру, а затем загрузите тот же файл при следующем запуске игры.

Ознакомиться с read(), readline() и write() методами.

+1

'pickle' упрощает чтение/запись для вас http://pymotw.com/2/pickle/index.html – ninMonkey

7

Вы можете использовать модуль pickle, чтобы сохранить переменные на диск, а затем перезагрузить их.

Пример:

import pickle 

# load the previous score if it exists 
try: 
    with open('score.dat', 'rb') as file: 
     score = pickle.load(file) 
except: 
    score = 0 

print "High score: %d" % score 

# your game code goes here 
# let's say the user scores a new high-score of 10 
score = 10; 

# save the score 
with open('score.dat', 'wb') as file: 
    pickle.dump(score, file) 

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

+0

Кроме pygame Surfaces. По какой-то причине у меня было много проблем с травлением поверхностей. не знаю, почему ... –

1

Сначала создайте файл highscore.txt с нулевым значением. Затем используйте следующий код:

hisc=open("highscore.txt","w+") 
highscore=hisc.read() 
highscore_in_no=int(highscore) 
if current_score>highscore_in_no: 
       hisc.write(str(current_score)) 
       highscore_in_no=current_score 
        . 
        . 
#use the highscore_in_no to print the highscore. 
        . 

        . 
hisc.close() 

Я мог бы сделать постоянную Стореру с рекордами этого простым способом, нет необходимости в полки или рассол.

-3

Я хотел бы предложить:

def add(): 
input_file=open("name.txt","a")#this opens up the file 
name=input("enter your username: ")#this input asks the user to enter their username 
score=input("enter your score: ")#this is another input that asks user for their score 
print(name,file=input_file) 
print(number,file=input_file)#it prints out the users name and is the commas and speech marks is what is also going to print before the score number is going to print 
input_file.close() 
+0

Да, потому что каждая отличная видеоигра позволяет пользователю вручную вводить свой высокий балл. – neuronet

Смежные вопросы