seek.py (1546B)
1 import pygame 2 import time 3 4 5 player_pos = (100, 100) 6 agent_pos = (200, 200) 7 agent_speed = 100 8 player_speed = 200 9 10 pygame.init() 11 12 screen_width = 800 13 screen_height = 600 14 screen = pygame.display.set_mode((screen_width, screen_height)) 15 16 black = (0, 0, 0) 17 white = (255, 255, 255) 18 19 running = True 20 last_time = time.time() 21 22 23 def draw_players(): 24 pygame.draw.circle(screen, white, player_pos, 10) 25 pygame.draw.circle(screen, white, agent_pos, 10) 26 27 def vector_length(p1): 28 return (p1[0]**2 + p1[1]**2)**0.5 29 30 left = False 31 32 while running: 33 for event in pygame.event.get(): 34 if event.type == pygame.QUIT: 35 running = False 36 37 current_time = time.time() 38 time_delta = current_time - last_time 39 last_time = current_time 40 41 position_delta = player_pos[0] - agent_pos[0], player_pos[1] - agent_pos[1] 42 43 agent_pos = ( 44 agent_pos[0] + ((position_delta[0] / vector_length(position_delta)) * time_delta * agent_speed), 45 agent_pos[1] + ((position_delta[1] / vector_length(position_delta)) * time_delta * agent_speed), 46 ) 47 48 49 player_delta = (0,0) 50 51 52 if player_pos[0] > screen_width and not left: 53 left = True 54 55 if player_pos[0] < 0 and left: 56 left = False 57 58 if left: 59 player_delta = (-player_speed,0) 60 else: 61 player_delta = (player_speed,0) 62 63 64 player_pos = ( 65 player_pos[0] + player_delta[0] * time_delta, 66 player_pos[1] + player_delta[1] * time_delta 67 ) 68 69 screen.fill(black) 70 draw_players() 71 pygame.display.update() 72 73 pygame.quit()