|
|
@@ -7,13 +7,14 @@ clock = pygame.time.Clock()
|
|
|
running = True
|
|
|
dt = 0
|
|
|
|
|
|
-force_coef = 10
|
|
|
+force_coef = 20
|
|
|
player_applied_force = pygame.Vector2(0, 0)
|
|
|
player_mass = 1
|
|
|
player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2)
|
|
|
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):
|
|
|
@@ -25,6 +26,13 @@ def draw_arrow(surface, color, start, end, width=3):
|
|
|
point2 = end - direction * arrow_size - perpendicular * arrow_size / 2
|
|
|
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:
|
|
|
for event in pygame.event.get():
|
|
|
@@ -33,10 +41,12 @@ while running:
|
|
|
|
|
|
screen.fill("purple")
|
|
|
|
|
|
-
|
|
|
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)
|
|
|
screen.blit(rotated_raketa, raketa_rect)
|
|
|
|
|
|
@@ -52,6 +62,9 @@ while running:
|
|
|
if keys[pygame.K_d]:
|
|
|
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
|
|
|
player_speed += acceleration * dt
|
|
|
player_pos += player_speed * dt
|