forked from SHZ66/Skeet-Shooting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleaderboard.py
62 lines (52 loc) · 1.81 KB
/
leaderboard.py
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
55
56
57
58
59
60
61
62
import os, pickle, operator
class Record():
def __init__(self, name='', score=0):
self.name = name.strip()
if self.name == '':
self.name = 'Anonymous'
self.score = score
def __str__(self):
return '%s: %d'%(self.name, self.score)
def __repr__(self):
return self.__str__()
'''
def readRecords(filename):
records = []
if os.path.exists(filename):
with open(filename, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
if len(row) >= 2:
record = Record(row[0], int(row[1]))
records.append(record)
return records
def writeRecords(filename, records):
with open(filename, 'wb') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for record in records:
writer.writerow([record.name, str(record.score)])
def appendRecords(filename, records):
with open(filename, 'ab') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for record in records:
writer.writerow([record.name, str(record.score)])
def sortRecords(records):
def compare(a,b):
return a.score < b.score
records.sort(compare)
return records
'''
def readRecords(filename):
try:
if os.path.exists(filename):
with open(filename, 'rb') as f:
return pickle.load(f)
except (IOError, EOFError):
return []
return []
def writeRecords(filename, records):
with open(filename, 'wb') as f:
pickle.dump(records, f, pickle.HIGHEST_PROTOCOL)
def sortRecords(records):
records.sort(key=operator.itemgetter('score'), reverse=True)
return records