From fd11e7f6ac06f7a5c3301af956cf5b153a4e976f Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Tue, 6 Apr 2021 20:47:46 +0300 Subject: [PATCH] Reworked load() --- EndSceen.py | 95 +++++++++++++++++++++++++++------------------------- leaders.lb | Bin 138 -> 38 bytes 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/EndSceen.py b/EndSceen.py index 9ff15ec..ac32505 100644 --- a/EndSceen.py +++ b/EndSceen.py @@ -1,7 +1,8 @@ """ -Enemy entity class +Endscreen class """ + import pickle import pygame @@ -26,6 +27,16 @@ class EndSceen(): self.saveFileName = 'leaders.lb' + def getScorePosition(self, score): + counter = 1 + for i in self.sortedDataByScores: + if i[1][1] < score: + return counter + else: + counter += 1 + return counter + + def newEndScreen(self): self.endScreenTimer = 0; self.playerName = 'Player' @@ -36,25 +47,51 @@ class EndSceen(): self.isBackButton = True - try: - fileWithData = open(self.saveFileName, 'rb') - except IOError as e: - pass - else: - listPlayers = pickle.load(fileWithData) + self.loadResults() - for line in listPlayers: - if (len(line) == 3): - self.data.append ( - [line[0][:10], int(line[1]), float(line[2])] + + def loadResults(self): + with open(self.saveFileName, 'rb') as file: + for line in file: + try: + name, score, time = with line.split() + self.data.append( + [name[:10].decode('ascii'), int(score), float(time)] ) + except Exception: + continue - fileWithData.close() + file.close() self.sortedDataByScores = sorted(enumerate(self.data), key=lambda i: i[1][1], reverse=True) + def saveResults(self): + newData = [] + + # try: + # fileWithData = open(self.saveFileName, 'rb') + # except IOError as e: + # pass + # else: + # tmpData = pickle.load(fileWithData) + # fileWithData.close() + # + # for line in tmpData: + # if len(line.split()) == 3: + # if not (line.split()[0].rstrip() == self.playerName.rstrip()): + # newData.append(line) + # + # newData.append(('{0} {1} {2:.2f}\n'.format(self.playerName, + # self.game.getScore(), self.game.getTime()))) + # + # with open (self.saveFileName, 'wb') as fileWithData: + # pickle.dump(newData, fileWithData) + # + # fileWithData.close() + + def renderText(self, text, font, color, center, backColor=None): render = font.render(text, True, color, backColor) rect = render.get_rect() @@ -108,16 +145,6 @@ class EndSceen(): (self.game.getScreenWidth()/2,100 + (number + 1)*50)) - def getScorePosition(self, score): - counter = 1 - for i in self.sortedDataByScores: - if i[1][1] < score: - return counter - else: - counter += 1 - return counter - - def render(self): backGround = pygame.Surface(self.game.screenSize, pygame.SRCALPHA) backGround.fill((0,0,0,200)) @@ -206,27 +233,3 @@ class EndSceen(): self.playerName += pygame.key.name(event.key).upper() else: self.playerName += pygame.key.name(event.key).lower() - - - def saveResults(self): - newData = [] - - try: - fileWithData = open(self.saveFileName, 'rb') - except IOError as e: - pass - else: - tmpData = pickle.load(fileWithData) - fileWithData.close() - - for line in tmpData: - if len(line.split()) == 3: - if not (line.split()[0].rstrip() == self.playerName.rstrip()): - newData.append(line) - - newData.append(('{0} {1} {2:.2f}\n'.format(self.playerName, - self.game.getScore(), self.game.getTime()))) - - with open (self.saveFileName, 'wb') as fileWithData: - pickle.dump(newData, fileWithData) - fileWithData.close() diff --git a/leaders.lb b/leaders.lb index 1dd5a2ced796bbd4bb0a4c6f5569302775264925..b14022e4ea88ec5f5ee51d6d9b273725e2e07600 100644 GIT binary patch literal 38 icmWH@NvupQGE^{BFf`zTaEug;6pUaTV+CUcV*>!znhI_J literal 138 zcmZo*nOe^P0kKn@E7Bc7z$rb+rPwPkBrvVetTfd-yf~o3*V8r4HQ&IwwAk6WTsJht zAUQSO*`O%U(=#$K-cL6vG|b;9J2EdP-Pg#~)FUO-!mTL1%+JTAGB?;g!ZRbsxx&)j iG{qx3%0JgAsx+{wDk;pnu%a+0(=*7(tJro*q8