New records load system

This commit is contained in:
2021-04-07 12:47:37 +03:00
parent 5efef62b28
commit 5f3f69fc31
4 changed files with 35 additions and 37 deletions
+2 -6
View File
@@ -221,10 +221,6 @@ class Drakora():
self.fontGodmode, (255, 255, 255), self.fontGodmode, (255, 255, 255),
(self.getScreenWidth()/2,60)) (self.getScreenWidth()/2,60))
self.renderText('%f'%self.player.speed,
self.fontGodmode, (255, 255, 255),
(self.getScreenWidth()/2,60))
pygame.display.flip() pygame.display.flip()
@@ -240,6 +236,7 @@ class Drakora():
else: else:
return 300 return 300
def collideCheck(self): def collideCheck(self):
for enemy in self.enemies: for enemy in self.enemies:
if pygame.sprite.groupcollide(self.player.getCollisionBoxes(), enemy.getCollisionBoxes(), None, None): if pygame.sprite.groupcollide(self.player.getCollisionBoxes(), enemy.getCollisionBoxes(), None, None):
@@ -249,10 +246,9 @@ class Drakora():
if self.player.isOnFloor: if self.player.isOnFloor:
self.player.rect.y += 1 self.player.rect.y += 1
if not pygame.sprite.spritecollideany(self.player, self.floors): if not pygame.sprite.spritecollideany(self.player, self.floors):
self.player.isOnFloor = False self.player.isOnFloor = False
self.player.rect.y -= 1 self.player.rect.y -= 1
else: else:
if pygame.sprite.spritecollideany(self.player, self.floors): if pygame.sprite.spritecollideany(self.player, self.floors):
self.player.isOnFloor = True self.player.isOnFloor = True
+26 -21
View File
@@ -55,44 +55,49 @@ class EndSceen():
def getResultsFromFile(self): def getResultsFromFile(self):
data = [] data = []
with open(self.saveFileName, 'rb') as file: try:
for line in file: with open(self.saveFileName, 'rb') as file:
try: fileData = self.shiftRight(file.read()).decode('utf-8')
line = self.shiftRight(line).decode('ascii') for line in fileData.split('\n'):
name, score, time = line.split() name, score, time = line.split('\t')
data.append( data.append(
[name[:10], int(score), float(time)] [name[:10], int(score), float(time)]
) )
except Exception: except Exception:
continue pass
return data return data
def saveResults(self): def saveResults(self):
data = self.getResultsFromFile() data = self.getResultsFromFile()
# data.append(('{0} {1} {2:.2f}\n'.format(self.playerName,
# self.game.getScore(), self.game.getTime())))
data.append( data.append(
[self.playerName[:10], [self.playerName[:10],
int(self.game.getScore()), int(self.game.getScore()),
float(self.game.getTime())] float(self.game.getTime())]
) )
with open(self.saveFileName, 'wb') as file: try:
for entry in data: with open(self.saveFileName, 'wb') as file:
string = '{} {} {}\n'.format(*entry) for entry in data:
arr = string.encode('ascii') string = '{}\t{}\t{}\n'.format(*entry)
file.write(self.shiftLeft(arr)) 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): 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): 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): def renderText(self, text, font, color, center, backColor=None):
@@ -190,7 +195,7 @@ class EndSceen():
), ),
self.fontLeaderBoard, (255, 255, 255), self.fontLeaderBoard, (255, 255, 255),
(self.game.getScreenWidth()/2, 100 + (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.renderText(' {0:^30} '.format('Missing player name'),
self.fontError, (255, 255, 255), self.fontError, (255, 255, 255),
+7 -7
View File
@@ -110,7 +110,7 @@ class Player(pygame.sprite.Sprite):
self.collisionBoxes.add(CollisionBox(-10, 5, 30, 20, self.rect.center)) self.collisionBoxes.add(CollisionBox(-10, 5, 30, 20, self.rect.center))
self.collisionBoxes.add(CollisionBox(0, 35, 25, 40, 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): def getCollisionBoxes(self):
@@ -168,18 +168,18 @@ class Player(pygame.sprite.Sprite):
gameSpeed = self.mainGameClass.getGameSpeed() gameSpeed = self.mainGameClass.getGameSpeed()
if self.isJumping: if self.isJumping:
if gameSpeed <= 2: maxHoverCount = 30 if gameSpeed <= 2: maxHoverCount = 40
elif gameSpeed <= 4: maxHoverCount = 23 elif gameSpeed <= 4: maxHoverCount = 29
elif gameSpeed <= 8: maxHoverCount = 16 elif gameSpeed <= 8: maxHoverCount = 20
elif gameSpeed <= 16: maxHoverCount = 9 elif gameSpeed <= 16: maxHoverCount = 9
elif gameSpeed <= 32: maxHoverCount = 5 elif gameSpeed <= 32: maxHoverCount = 5
elif gameSpeed <= 64: maxHoverCount = 2 elif gameSpeed <= 64: maxHoverCount = 2
else: maxHoverCount = 1 else: maxHoverCount = 1
if self.isDownJump and self.hoverCount < maxHoverCount: if self.isDownJump and self.hoverCount < maxHoverCount:
self.speed -= gameSpeed/8 * ( self.speed -= gameSpeed/8 * (
(math.cos(2*math.pi*self.hoverCount/ (math.cos(2*math.pi*self.hoverCount/(2*maxHoverCount))
(2*maxHoverCount))+1)/2.5 + 0.2 + 1)/2.5 + 0.2
) )
self.hoverCount += 1 self.hoverCount += 1
else: else:
-3
View File
@@ -1,3 +0,0 @@
Player1 1 10
Player2 2 20
Player3 3 30