54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
DIFFICULTIES = ['Very Easy', 'Easy', 'Medium', 'Hard', 'Insane']
|
|
|
|
|
|
def read_highscore_file(file):
|
|
with open(file, 'r') as f:
|
|
file_data = f.read()
|
|
|
|
highscore_list = {}
|
|
for diff, data in zip(DIFFICULTIES, file_data.split('\n---\n')):
|
|
diff_list = []
|
|
for line in data.split('\n'):
|
|
info = {}
|
|
placing_info = line.split(',')
|
|
info['name'] = placing_info[0]
|
|
time = int(placing_info[1])
|
|
info['time'] = "{:02d}:{:02d}.{:1d}".format(int(time / 600), int(time / 10) % 60, time % 10)
|
|
diff_list.append(info)
|
|
highscore_list[diff] = diff_list
|
|
|
|
return highscore_list
|
|
|
|
|
|
def write_highscore_file(file, data):
|
|
with open(file, 'w') as f:
|
|
for diff in DIFFICULTIES:
|
|
info = [','.join([placing_info['name'], str(placing_info['time'])]) for placing_info in data[diff]]
|
|
f.write('\n'.join(info))
|
|
if not diff == DIFFICULTIES[-1]:
|
|
f.write('\n---\n')
|
|
|
|
|
|
def replace_placing(data, difficulty, name, time):
|
|
for info in data[difficulty]:
|
|
if time < info['time']:
|
|
info['name'] = name
|
|
info['time'] = time
|
|
break
|
|
|
|
|
|
def check_ranking(data, difficulty, name, time):
|
|
rank = -1
|
|
for rnk, info in enumerate(data[difficulty]):
|
|
if time < info['time']:
|
|
info['name'] = name
|
|
info['time'] = time
|
|
rank = -1
|
|
break
|
|
return rank
|
|
|
|
|
|
if __name__ == "__main__":
|
|
score = read_highscore_file("./highscore.txt")
|
|
replace_placing(score, DIFFICULTIES[2], 'abcv', 12345)
|
|
write_highscore_file("./new_highscore.txt", score) |