From 74b757e3bfe83a07a2d5257295be134f6f2be858 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Sat, 27 Mar 2021 19:25:36 +0300 Subject: [PATCH] Tried to fix lags --- Drakora.pyw | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Drakora.pyw b/Drakora.pyw index 9c23e57..ce62d3b 100644 --- a/Drakora.pyw +++ b/Drakora.pyw @@ -7,6 +7,10 @@ Written in Python 3.X using Pygame library import pygame import random +import time + + +timeDiff = 0 class Floor(pygame.sprite.Sprite): @@ -34,7 +38,7 @@ class Cloud(pygame.sprite.Sprite): def update(self): - self.rect.x -= self.speed + self.rect.x -= self.speed*timeDiff class Player(pygame.sprite.Sprite): @@ -66,8 +70,8 @@ class Player(pygame.sprite.Sprite): def update(self): if not self.speed: self.rect.y += 1 - self.speed += 0.35 - self.rect.y += self.speed + self.speed += 0.17 + self.rect.y += self.speed*timeDiff class Enemy(pygame.sprite.Sprite): @@ -128,9 +132,9 @@ class Enemy(pygame.sprite.Sprite): def update(self): if self.type == 1: - self.rect.x -= self.speed + self.rect.x -= self.speed*timeDiff else: - self.rect.x -= self.speed*2 + self.rect.x -= self.speed*2*timeDiff class Drakora(): @@ -147,7 +151,7 @@ class Drakora(): self.isGameOver = False self.isPaused = False - self.gameSpeed = 3 + self.gameSpeed = 2 self.enemyCD = 0 self.enemyChance = 100.0 @@ -161,7 +165,7 @@ class Drakora(): self.buttonsCrouch = (pygame.K_DOWN,) self.screenSize = (800, 600) - self.targetFps = 60 + self.targetFps = 120 self.floorHeight = 50 @@ -187,6 +191,8 @@ class Drakora(): self.fontScore = pygame.font.Font(font, 32) self.fontMessage = pygame.font.Font(font, 56) + self.timeOfLastFrameInNs = time.time_ns() + self.newGame() @@ -262,7 +268,7 @@ class Drakora(): self.player.standup() if self.player.isJumping: - if self.isDownJump and self.player.hoverCount < 10: + if self.isDownJump and self.player.hoverCount < 7: self.player.speed -= 1 - self.player.speed/(15+ self.player.hoverCount*3) self.player.hoverCount += 1 @@ -317,17 +323,21 @@ class Drakora(): self.collideCheck() - self.clock.tick(self.targetFps) - return True def play(self): - isRunning = True + global timeDiff + isRunning = True while isRunning: - isRunning = self.logic() + timeOfNewFrameInNs = time.time_ns() + timeDiff = (timeOfNewFrameInNs-self.timeOfLastFrameInNs)/10000000 + self.timeOfLastFrameInNs = timeOfNewFrameInNs + + self.clock.tick(self.targetFps) self.render() + isRunning = self.logic() if __name__ == '__main__':