highscores list

Shawn Minisall trekker182 at comcast.net
Sat Dec 8 13:32:08 EST 2007


I'm writing a game that uses two functions to check and see if a file 
called highScoresList.txt exists in the main dir of the game program.  
If it doesn, it creates one.  That part is working fine.  The problem is 
arising when it goes to read in the high scores from the file when I 
play again.

This is the error msg python is giving me

Traceback (most recent call last):
 File "<pyshell#0>", line 1, in <module>
   main()
 File "I:\PYTHON\PROJECT #3\PROJECT3.PYW", line 330, in main
   if(hasHighScore(wins) == True):
 File "I:\PYTHON\PROJECT #3\PROJECT3.PYW", line 175, in hasHighScore
   scores[i],names[i] = string.split(line,"\t")
ValueError: need more than 1 value to unpack

Here's the relavant code:

def hasHighScore(score):
    #opens highScoresList.txt
    infile = open("highScoresList.txt",'r')
    scores = [0,0,0]
    names = ["","",""]

    #reads in scores from highScoresList.txt
    i=0
    for line in infile.readlines():
        scores[i],names[i] = string.split(line,"\t")
        names[i]=string.rstrip(names[i])
        i += 1
    infile.close()
   
    #compares player's score with those in highScoresList.txt
    i=0
    for i in range(0,len(scores)):
        if(score > int(scores[i])):
            return True
        else:
            return False


   
def setHighScores(score,name):
    #opens highScoresList.txt
    infile = open("highScoresList.txt",'r')
    scores = [0,0,0]
    names = ["","",""]

    #reads in scores from highScoresList.txt
    i=0
    for line in infile.readlines():
        scores[i],names[i] = string.split(line,"\t")
        scores[i]=int(scores[i])
        names[i]=string.rstrip(names[i])
        i += 1
    infile.close()
   
    #shuffles thru the highScoresList.txt and inserts player's score if 
higher then those in file
    i=len(scores)
    while(score > scores[i-1] and i>0):
        i -= 1

    scores.insert(i,score)
    names.insert(i,name)
    scores.pop(len(scores)-1)
    names.pop(len(names)-1)
   
    #writes new highScoresList.txt
    outfile = open("highScoresList.txt","w")

    outfile.write ("     High Score                 Name             \n")
    outfile.write ("-------------------------------------------------\n")
  
    i=0
    for i in range(0,len(scores)):
        outfile.write("\t" + str(scores[i]) + "\t\t\t" + names[i] + "\n")
    outfile.close()

And here's the call to the functions at the end of my game, included in 
the error msg.

    #adds player's score to high score list if high enough
    if(hasHighScore(wins) == True):
        setHighScores(wins,getName(wins))

And this is what the text file looks like when it happens.

     High Score                 Name            
-------------------------------------------------
    15                              SHAWN
    0           
    0       

The answer is probably simple, I've just been working on this program so 
long that my brain has turned to mush.  Any help would be much 
appreciated...thanks. 





More information about the Python-list mailing list