From 5f3f69fc311e10d499d6601f3e898c4b1daa7efd Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Wed, 7 Apr 2021 12:47:37 +0300 Subject: [PATCH] New records load system --- Drakora.pyw | 8 ++------ EndSceen.py | 47 ++++++++++++++++++++++++++--------------------- Player.py | 14 +++++++------- leaders.lb | 3 --- 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/Drakora.pyw b/Drakora.pyw index ce6d69b..144264e 100644 --- a/Drakora.pyw +++ b/Drakora.pyw @@ -221,10 +221,6 @@ class Drakora(): self.fontGodmode, (255, 255, 255), (self.getScreenWidth()/2,60)) - self.renderText('%f'%self.player.speed, - self.fontGodmode, (255, 255, 255), - (self.getScreenWidth()/2,60)) - pygame.display.flip() @@ -240,6 +236,7 @@ class Drakora(): else: return 300 + def collideCheck(self): for enemy in self.enemies: if pygame.sprite.groupcollide(self.player.getCollisionBoxes(), enemy.getCollisionBoxes(), None, None): @@ -249,10 +246,9 @@ class Drakora(): if self.player.isOnFloor: self.player.rect.y += 1 - if not pygame.sprite.spritecollideany(self.player, self.floors): self.player.isOnFloor = False - self.player.rect.y -= 1 + self.player.rect.y -= 1 else: if pygame.sprite.spritecollideany(self.player, self.floors): self.player.isOnFloor = True diff --git a/EndSceen.py b/EndSceen.py index c809788..717bb54 100644 --- a/EndSceen.py +++ b/EndSceen.py @@ -55,44 +55,49 @@ class EndSceen(): def getResultsFromFile(self): data = [] - with open(self.saveFileName, 'rb') as file: - for line in file: - try: - line = self.shiftRight(line).decode('ascii') - name, score, time = line.split() - data.append( - [name[:10], int(score), float(time)] - ) - except Exception: - continue + try: + with open(self.saveFileName, 'rb') as file: + fileData = self.shiftRight(file.read()).decode('utf-8') + for line in fileData.split('\n'): + name, score, time = line.split('\t') + data.append( + [name[:10], int(score), float(time)] + ) + except Exception: + pass + return data def saveResults(self): data = self.getResultsFromFile() - # data.append(('{0} {1} {2:.2f}\n'.format(self.playerName, - # self.game.getScore(), self.game.getTime()))) - data.append( [self.playerName[:10], int(self.game.getScore()), float(self.game.getTime())] ) - with open(self.saveFileName, 'wb') as file: - for entry in data: - string = '{} {} {}\n'.format(*entry) - arr = string.encode('ascii') - file.write(self.shiftLeft(arr)) + try: + with open(self.saveFileName, 'wb') as file: + for entry in data: + string = '{}\t{}\t{}\n'.format(*entry) + arr = string.encode('utf-8') + file.write(self.shiftLeft(arr)) + except Exception: + pass + + + def shift(self, c, offset): + return (c + offset)%0x100 def shiftLeft(self, arr): - return bytearray([x if x == 10 else x-32 for x in arr]) + return bytearray([self.shift(x, -77) for x in arr]) def shiftRight(self, arr): - return bytearray([x if x == 10 else x+32 for x in arr]) + return bytearray([self.shift(x, +77) for x in arr]) def renderText(self, text, font, color, center, backColor=None): @@ -190,7 +195,7 @@ class EndSceen(): ), self.fontLeaderBoard, (255, 255, 255), (self.game.getScreenWidth()/2, 100 + - (5 + 2)*50), (200, 20, 20)) + (5 + 2)*50), (208, 85, 52)) self.renderText(' {0:^30} '.format('Missing player name'), self.fontError, (255, 255, 255), diff --git a/Player.py b/Player.py index 5cff810..9b58996 100644 --- a/Player.py +++ b/Player.py @@ -110,7 +110,7 @@ class Player(pygame.sprite.Sprite): self.collisionBoxes.add(CollisionBox(-10, 5, 30, 20, self.rect.center)) self.collisionBoxes.add(CollisionBox(0, 35, 25, 40, self.rect.center)) - self.__doubleY = float(self.rect.x) + self.__doubleY = float(self.rect.y) def getCollisionBoxes(self): @@ -168,18 +168,18 @@ class Player(pygame.sprite.Sprite): gameSpeed = self.mainGameClass.getGameSpeed() if self.isJumping: - if gameSpeed <= 2: maxHoverCount = 30 - elif gameSpeed <= 4: maxHoverCount = 23 - elif gameSpeed <= 8: maxHoverCount = 16 + if gameSpeed <= 2: maxHoverCount = 40 + elif gameSpeed <= 4: maxHoverCount = 29 + elif gameSpeed <= 8: maxHoverCount = 20 elif gameSpeed <= 16: maxHoverCount = 9 elif gameSpeed <= 32: maxHoverCount = 5 elif gameSpeed <= 64: maxHoverCount = 2 - else: maxHoverCount = 1 + else: maxHoverCount = 1 if self.isDownJump and self.hoverCount < maxHoverCount: self.speed -= gameSpeed/8 * ( - (math.cos(2*math.pi*self.hoverCount/ - (2*maxHoverCount))+1)/2.5 + 0.2 + (math.cos(2*math.pi*self.hoverCount/(2*maxHoverCount)) + + 1)/2.5 + 0.2 ) self.hoverCount += 1 else: diff --git a/leaders.lb b/leaders.lb index b14022e..e69de29 100644 --- a/leaders.lb +++ b/leaders.lb @@ -1,3 +0,0 @@ -Player1 1 10 -Player2 2 20 -Player3 3 30 \ No newline at end of file