/usr/share/games/kiki-the-nano-bot/py/highscore.py is in kiki-the-nano-bot-data 1.0.2+dfsg1-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | if Controller.isDebugVersion(): print "[highscore.py]"
# .................................................................................................................
# KIKI HIGHSCORE
# .................................................................................................................
class KikiHighscore (ConfigParser):
"""kiki highscore"""
# ................................................................ init
def __init__ (self):
"""initialization"""
ConfigParser.__init__ (self)
self.readfp (open(kikipy_path + "kiki.hsc"))
try:
if os.uname()[0] == "Darwin":
self.highscore_file_path = os.path.expanduser ("~/Library/Preferences/kiki.hsc")
else:
self.highscore_file_path = os.path.expanduser ("~/.kiki.hsc")
except:
self.highscore_file_path = os.path.expanduser ("~/.kiki.hsc")
try:
self.read (self.highscore_file_path)
except:
print ("creating " + self.highscore_file_path)
self.save ()
# ................................................................ minmoves for level
def levelUserMoves (self, level_name):
"""reads users number of moves for level level_name from highscore file"""
if not self.has_section (level_name):
self.add_section (level_name)
if self.has_option(level_name, getpass.getuser()):
min_moves = int (self.get (level_name, getpass.getuser()))
return min_moves
else:
return 0
# ................................................................ minmoves for level
def levelParMoves (self, level_name):
"""reads par number of moves for level level_name from highscore file"""
if not self.has_section (level_name):
self.add_section (level_name)
if self.has_option(level_name, "moves"):
par_moves = int (self.get (level_name, "moves"))
return par_moves
else:
self.set (level_name, "moves", "1000")
return 1000
# ................................................................ finish level
def levelFinished (self, level_name, moves):
"""writes data for finished level to highscore file"""
level_num = level_list.index(level_name)
if not self.has_section (level_name):
self.add_section (level_name)
if self.has_option(level_name, getpass.getuser()): # level already solved
old_moves = int (self.get (level_name, getpass.getuser()))
if moves < old_moves:
self.set (level_name, getpass.getuser(), str (int (moves)))
else: # first time solved
self.set (level_name, getpass.getuser(), str (int (moves)))
available_level_num = self.getLastAvailableLevel()
self.set ("main", "last_level", level_list[min(available_level_num+2, len(level_list)-1)])
self.set ("main", "current_level", level_list[min(level_num+1, len(level_list)-1)])
self.save ()
# ................................................................ get last level
def getLastAvailableLevel (self):
"""returns the index of last available level in level_list"""
last_level = str(self.get("main", "last_level"))
if last_level in level_list:
return level_list.index(str(last_level))
else:
return -1
# ................................................................ get last level
def getLastLevel (self):
"""returns the index of last played level in level_list"""
last_level = str(self.get("main", "current_level"))
if last_level in level_list:
return level_list.index(str(last_level))
else:
return -1
# ................................................................ save
def save (self):
"""save the highscore"""
try:
highscore_file = file (self.highscore_file_path, "w+")
self.write (highscore_file)
highscore_file.close()
except:
console.printError ("unable to write highscore to " + self.highscore_file_path)
# .................................................................................................................
highscore = KikiHighscore ()
|