import pygame # pygame setup pygame.init() screen = pygame.display.set_mode((1280, 720)) clock = pygame.time.Clock() running = True dt = 0 force_coef = 10 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() def draw_arrow(surface, color, start, end, width=3): pygame.draw.line(surface, color, start, end, width) direction = (end - start).normalize() arrow_size = 10 perpendicular = pygame.Vector2(-direction.y, direction.x) point1 = 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]) while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill("purple") angle = player_speed.angle_to(pygame.Vector2(0, -1)) rotated_raketa = pygame.transform.rotate(raketa, angle) raketa_rect = rotated_raketa.get_rect(center=player_pos) screen.blit(rotated_raketa, raketa_rect) player_applied_force = pygame.Vector2(0, 0) keys = pygame.key.get_pressed() if keys[pygame.K_w]: player_applied_force.y -= force_coef if keys[pygame.K_s]: player_applied_force.y += force_coef if keys[pygame.K_a]: player_applied_force.x -= force_coef if keys[pygame.K_d]: player_applied_force.x += force_coef acceleration = player_applied_force / player_mass player_speed += acceleration * dt player_pos += player_speed * dt # Draw force arrow if player_applied_force.length() > 0: arrow_end = player_pos + player_applied_force * 2 draw_arrow(screen, "yellow", player_pos, arrow_end) # Draw speed arrow if player_speed.length() > 0: arrow_end = player_pos + player_speed * 2 draw_arrow(screen, "cyan", player_pos, arrow_end) pygame.display.flip() dt = clock.tick(60) / 1000 pygame.quit()