visualizations

Programmatic visualizations
git clone git://git.laack.co/visualizations.git
Log | Files | Refs | README

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()