-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScores.py
More file actions
55 lines (46 loc) · 1.76 KB
/
Copy pathScores.py
File metadata and controls
55 lines (46 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os, pygame, shelve, time
from Message import *
class Scores(object):
"""Handle a score database."""
def __init__(self):
self.loadScoreList();
def loadScoreList(self):
"""Load the database."""
try:
self.scores = shelve.open("scorelist.dat", "c");
except IOError:
print("Error: unable to open/create scorelist.dat");
sys.exit();
def saveScoreList(self):
"""Save the database."""
try:
self.scores.sync();
except IOError:
sys.exit();
def printScores(self, map):
"""Creates a message sprite with scores of the map.
Returns a pygame.sprite.GroupSingle"""
scoreText = ["# Time Name (Level)"];
sList = self.scores.get(map);
if(sList != None):
i = 1;
for score in sList:
name, playTime, level = score;
scoreText.append(str.format("{0} {1} {2} ({3})", i, time.strftime("%M:%S", time.localtime(playTime)), name, level));
i+=1;
else:
scoreText = ['No recorded scores'];
return pygame.sprite.GroupSingle(Message(scoreText, str.format("Scores: {0}", os.path.basename(map[0:-4]))));
def addScore(self, map, name, playTime, level):
"""Adds a score to the map."""
if(self.scores.has_key(map) == True):
sList = self.scores.get(map);
sList.append((name, playTime, level));
self.scores[map] = sList;
else:
self.scores[map] = [(name, playTime, level)];
sList = self.scores.get(map);
sList.sort(lambda x,y:cmp(x[1],y[1]));
if(len(sList) > 10):
sList.pop(10);
self.scores[map] = sList;