feat: add delta time

This commit is contained in:
2025-10-18 22:06:19 +02:00
parent dde690818b
commit 8989341714
2 changed files with 20 additions and 12 deletions

View File

@@ -7,14 +7,19 @@ from src.utils import segments_intersect
from src.vec import Vec
sign = lambda x: 0 if x == 0 else (-1 if x < 0 else 1)
class Car:
MAX_SPEED = 0.05
MAX_BACK_SPEED = -0.025
ROTATE_SPEED = radians(1)
MAX_SPEED = 5
MAX_BACK_SPEED = -2
ROTATE_SPEED = 1
COLOR = (230, 150, 80)
WIDTH = 0.4
LENGTH = 0.6
COLLISION_MARGIN = 0.4
ACCELERATION = 2
FRICTION = 3
def __init__(self, pos: Vec, direction: Vec) -> None:
self.pos: Vec = pos
@@ -26,20 +31,20 @@ class Car:
self.right: bool = False
self.colliding: bool = False
def update(self):
def update(self, dt: float):
if self.forward:
self.speed += 0.001
self.speed += self.ACCELERATION * dt
self.speed = min(self.MAX_SPEED, self.speed)
if self.backward:
self.speed -= 0.002
self.speed -= self.ACCELERATION * 2 * dt
self.speed = max(self.MAX_BACK_SPEED, self.speed)
rotate_angle: float = 0
if self.left:
rotate_angle -= self.ROTATE_SPEED
rotate_angle -= self.ROTATE_SPEED * dt
if self.right:
rotate_angle += self.ROTATE_SPEED
rotate_angle += self.ROTATE_SPEED * dt
# if self.backward:
# rotate_angle *= -1
@@ -47,11 +52,13 @@ class Car:
if rotate_angle != 0:
self.direction = self.direction.rotate(rotate_angle)
self.speed *= 0.98
if abs(self.speed) < 1e-8:
if not self.forward and not self.backward:
self.speed -= sign(self.speed) * self.FRICTION * dt
if abs(self.speed) < 1e-4:
self.speed = 0
self.pos += self.direction * self.speed
self.pos += self.direction * self.speed * dt
def render(self, surf: pygame.Surface, camera: Camera):
pts: list[Vec] = self.get_corners()

View File

@@ -34,8 +34,9 @@ class Game:
def mainloop(self):
while self.running:
dt: float = self.clock.get_time() / 1000
self.process_pygame_events()
self.car.update()
self.car.update(dt)
self.car.check_collisions(self.track.get_collision_polygons())
self.render()
self.clock.tick(60)