From 843df27d16f29885a3f4a1bcd51b92a84fc47ae2 Mon Sep 17 00:00:00 2001 From: Nikolya Andreychik Date: Mon, 5 Apr 2021 12:18:31 -0700 Subject: [PATCH] Modified leaderboard --- EndSceen.py | 52 +++++++++++++++++++++++++++++++++++++++------------- leaders.txt | 2 +- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/EndSceen.py b/EndSceen.py index 27d3e9b..a2aa7d2 100644 --- a/EndSceen.py +++ b/EndSceen.py @@ -12,9 +12,12 @@ class EndSceen(): self.fontLeaderBoard = pygame.font.Font(mainGameClass.getFont(), 30) self.fontLeaderBoardActive = pygame.font.Font(mainGameClass.getFont(), 30) self.fontLeaderBoardActive.underline = True + self.fontError = pygame.font.Font(mainGameClass.getFont(), 15) + self.game = mainGameClass def newEndScreen(self): + self.endScreenTimer = 0; self.playerName = 'Player' self.scoresFromFile = [] @@ -35,8 +38,8 @@ class EndSceen(): self.sortedDataByScores = sorted(enumerate(self.data), key=lambda i: i[1][1], reverse=True) - def renderText(self, text, font, color, center): - render = font.render(text, True, color) + def renderText(self, text, font, color, center, backColor=None): + render = font.render(text, True, color, backColor) rect = render.get_rect() rect.center = center self.game.screen.blit(render, rect) @@ -49,7 +52,7 @@ class EndSceen(): # print(self.data[i]) if (self.game.getScore() > self.data[i][1] and not placeFlag): - self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f}'.format(j, self.playerName[:10], self.game.getScore(), self.game.getTime()), + self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f} '.format(j, self.playerName[:10], self.game.getScore(), self.game.getTime()), self.fontLeaderBoard, (255, 255, 255), (self.game.getScreenWidth()/2,100 + j*50)) j += 1 @@ -58,7 +61,7 @@ class EndSceen(): if (j > number): break - formatDataForOnePlayer = ' {0:3} {1:^10} {2:6d} {3:8.2f}'.format(j, *self.data[i]) + formatDataForOnePlayer = ' {0:3} {1:^10} {2:6d} {3:8.2f} '.format(j, *self.data[i]) self.renderText(formatDataForOnePlayer, self.fontLeaderBoard, (255, 255, 255), @@ -70,12 +73,12 @@ class EndSceen(): break if not placeFlag and j <= number: - self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f}'.format(j, self.playerName[:10], self.game.getScore(), self.game.getTime()), + self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f} '.format(j, self.playerName[:10], self.game.getScore(), self.game.getTime()), self.fontLeaderBoard, (255, 255, 255), (self.game.getScreenWidth()/2,100 + j*50)) - self.renderText(' {0:^10} {1:>6} {2:>8}'.format('.....', '..', '.....'), + self.renderText(' {0:>3} {1:^10} {2:>6} {3:>8} '.format('..','.....', '..', '.....'), self.fontLeaderBoard, (255, 255, 255), (self.game.getScreenWidth()/2,100 + (number + 1)*50)) @@ -92,6 +95,10 @@ class EndSceen(): def render(self): + backGround = pygame.Surface(self.game.screenSize, pygame.SRCALPHA) + backGround.fill((0,0,0,200)) + self.game.screen.blit(backGround, (0,0)) + self.renderText('GAME OVER', self.fontGameOver, (255, 255, 255), (self.game.getScreenWidth()/2,50)) @@ -102,9 +109,27 @@ class EndSceen(): self.drawTableLB(5) - self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f}'.format(self.getScorePosition(self.game.getScore()), self.playerName[:10], self.game.getScore(), self.game.getTime()), + cursorChar = ' ' + if self.endScreenTimer > self.game.targetFps / 3: + cursorChar = '_' + + if self.endScreenTimer > 2 * self.game.targetFps / 3: + self.endScreenTimer = 0 + + self.endScreenTimer += 1 + + if len(self.playerName) > 0: + self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f} '.format(self.getScorePosition(self.game.getScore()), self.playerName[:10] + (cursorChar if len(self.playerName) < 10 else ''), self.game.getScore(), self.game.getTime()), self.fontLeaderBoard, (255, 255, 255), - (self.game.getScreenWidth()/2,100 + 5*50 + 50 + 50)) + (self.game.getScreenWidth()/2,100 + (5 + 2)*50)) + else: + self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f} '.format(self.getScorePosition(self.game.getScore()), self.playerName[:10] + (cursorChar if len(self.playerName) < 10 else ''), self.game.getScore(), self.game.getTime()), + self.fontLeaderBoard, (255, 255, 255), + (self.game.getScreenWidth()/2,100 + (5 + 2)*50), (200, 20, 20)) + + self.renderText(' {0:^30} '.format('Missing player name'), + self.fontError, (255, 255, 255), + (self.game.getScreenWidth()/2,100 + (5 + 2)*50 + 25)) self.renderText('Back', self.fontLeaderBoard if not self.isBackButton else self.fontLeaderBoardActive, (255, 255, 255), @@ -123,12 +148,13 @@ class EndSceen(): self.isBackButton = True elif event.key == pygame.K_RETURN: - self.saveResults() + if len(self.playerName) > 0: + self.saveResults() - if self.isBackButton: - self.game.newGame() - else: - self.game.newGame() + if self.isBackButton: + self.game.newGame() + else: + self.game.newGame() elif event.key == pygame.K_BACKSPACE: self.playerName = self.playerName[:len(self.playerName) - 1] diff --git a/leaders.txt b/leaders.txt index 9e0f24f..3b5b210 100644 --- a/leaders.txt +++ b/leaders.txt @@ -1,5 +1,5 @@ Kolya 1 11.37 Coolguy 1 10.75 Wow 74 185.72 -Player 0 7.16 Cheater 1000 0.01 +New-Kolya 2 15.20