Browse Source

speed delatation

michal.korcak 1 month ago
parent
commit
3138bbd665
1 changed files with 17 additions and 4 deletions
  1. 17 4
      main.py

+ 17 - 4
main.py

@@ -7,13 +7,14 @@ clock = pygame.time.Clock()
 running = True
 running = True
 dt = 0
 dt = 0
 
 
-force_coef = 10
+force_coef = 20
 player_applied_force = pygame.Vector2(0, 0)
 player_applied_force = pygame.Vector2(0, 0)
 player_mass = 1
 player_mass = 1
 player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)
 player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)
 player_speed = pygame.Vector2(0, 0)
 player_speed = pygame.Vector2(0, 0)
 
 
-raketa = pygame.image.load("raketa.png").convert_alpha()
+raketa_original = pygame.image.load("raketa.png").convert_alpha()
+raketa = pygame.transform.scale(raketa_original, (raketa_original.get_width() // 3, raketa_original.get_height() // 3))
 
 
 
 
 def draw_arrow(surface, color, start, end, width=3):
 def draw_arrow(surface, color, start, end, width=3):
@@ -25,6 +26,13 @@ def draw_arrow(surface, color, start, end, width=3):
     point2 = end - direction * arrow_size - perpendicular * arrow_size / 2
     point2 = end - direction * arrow_size - perpendicular * arrow_size / 2
     pygame.draw.polygon(surface, color, [end, point1, point2])
     pygame.draw.polygon(surface, color, [end, point1, point2])
 
 
+def rescale_rocket(raketa, speed):
+    scale_factor = 1 + player_speed.length() * 0.01
+    raketa_w, raketa_h = raketa.get_size()
+    raketa_w *= scale_factor
+    raketa_h /= scale_factor
+    scaled_raketa = pygame.transform.scale(raketa, (raketa_h, raketa_w))
+    return scaled_raketa
 
 
 while running:
 while running:
     for event in pygame.event.get():
     for event in pygame.event.get():
@@ -33,10 +41,12 @@ while running:
 
 
     screen.fill("purple")
     screen.fill("purple")
 
 
-    
     angle = player_speed.angle_to(pygame.Vector2(0, -1))
     angle = player_speed.angle_to(pygame.Vector2(0, -1))
 
 
-    rotated_raketa = pygame.transform.rotate(raketa, angle)
+    scaled_raketa = rescale_rocket(raketa, player_speed)
+
+    rotated_raketa = pygame.transform.rotate(scaled_raketa, angle)
+
     raketa_rect = rotated_raketa.get_rect(center=player_pos)
     raketa_rect = rotated_raketa.get_rect(center=player_pos)
     screen.blit(rotated_raketa, raketa_rect)
     screen.blit(rotated_raketa, raketa_rect)
 
 
@@ -52,6 +62,9 @@ while running:
     if keys[pygame.K_d]:
     if keys[pygame.K_d]:
         player_applied_force.x += force_coef
         player_applied_force.x += force_coef
 
 
+    if player_applied_force.length() > 0:
+        player_applied_force.scale_to_length(force_coef)
+
     acceleration = player_applied_force / player_mass
     acceleration = player_applied_force / player_mass
     player_speed += acceleration * dt
     player_speed += acceleration * dt
     player_pos += player_speed * dt
     player_pos += player_speed * dt