2013-05-24 3 views
4

나는 파이 게임에서 파이 게임으로 아주 간단한 게임을 만들었습니다. 점수는 플레이어가 도달 한 모든 레벨을 기반으로합니다. 레벨이 score 인 변수로 있습니다. 게임의 시작이나 끝에서 최상위 레벨을 표시하고 싶습니다.파이썬 게임의 최고 점수 저장하기

두 개 이상의 점수를 표시하는 것이 훨씬 행복 하겠지만, 내가 본 다른 모든 스레드는 이해하기에 너무 복잡하므로 간단하게 유지하십시오. 초보자이고 점수가 하나뿐입니다. 필요한. 당신은 일반 텍스트 파일에 점수 변수를 작성할 수 http://docs.python.org/2/tutorial/inputoutput.html

:

+0

파이썬이 파이썬 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, 정의 할 것이 아무것도 없다, 그냥 작동, 그것을 밖으로 시도하십시오! 키 이름 'score'가 선택됩니다. 'd [ 'saved_score']'를 사용할 수있었습니다.물론 나중에 검색하기 위해 저장했던 것과 동일한 이름을 사용해야합니다. 파일은 자동으로 생성되지만 텍스트 형식이 아니며 변수를 저장하는 특수 파이썬 형식입니다. – elyase

+0

나는 내 파일 이름을 제외하고 코드를 실행했는데 'db 유형을 확인할 수 없습니다'라는 고통을 겪어서 미안하지만 실제로이 점을 이해할 수 없다. –

3

나는 자바 배경에서 온 내 파이썬은 크지 않다, 그러나 나는 독서에 파이썬 문서로 보일 것이다 및 파일에 쓰기 게임을 끝내기 전에 다음에 게임을 시작할 때 같은 파일을로드하십시오.

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

파이 게임 표면을 제외하고. 웬일인지, 나는 표면을 산산히 닦는 데 많은 어려움을 겪었다. 이유가 확실하지 않습니다 ... –

1

먼저 처음에 값이 0 인 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() 

내가이 간단한 방법, 선반 또는 피클 필요없이 영구적 인 최고 점수 storer을 만들 수 : 는 다음 코드를 사용합니다.

-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