import pygame import random # Pygame setup pygame.display.init() pygame.font.init() screen = pygame.display.set_mode((800, 600)) font = pygame.font.SysFont("Courier New", 16) done = False clock = pygame.time.Clock() # Create Variables player_pos = [400, 300] player_speed = 100 # Pixels / s player_rad = 20 dt = 0.0 bullets = [] # Each element of bullets will # be a sub-list [x, y, xspeed, yspeed] # Game Loop while not done: # INPUT evt = pygame.event.poll() # ... event-handling # ... device-polling key_pressed = pygame.key.get_pressed() if key_pressed[pygame.K_ESCAPE]: done = True if key_pressed[pygame.K_a]: player_pos[0] -= dt * player_speed if key_pressed[pygame.K_d]: player_pos[0] += dt * player_speed if key_pressed[pygame.K_w]: player_pos[1] -= dt * player_speed if key_pressed[pygame.K_s]: player_pos[1] += dt * player_speed # UPDATES dt = clock.tick() / 1000.0 # (temporary) Spawn a new bullet with a random speed new_xspeed = random.randint(-200, 200) new_yspeed = random.randint(-200, 200) new_x = player_pos[0] # Bullets spawn at player-pos new_y = player_pos[1] new_bullet = [new_x, new_y, new_xspeed, new_yspeed] bullets.append(new_bullet) # Update all bullets (using a for loop) for b in bullets: # b is the "current" sub-list b[0] += b[2] * dt b[1] += b[3] * dt # DRAWING screen.fill((0,0,0)) pygame.draw.rect(screen, (255,0,0), (player_pos[0] - player_rad, player_pos[1] - player_rad, player_rad * 2, player_rad * 2)) pygame.draw.circle(screen, (0,255,0), (int(player_pos[0]), int(player_pos[1])), 3) # Draw all bullets (using a while loop) i = 0 while i < len(bullets): x = int(bullets[i][0]) y = int(bullets[i][1]) pygame.draw.circle(screen, (255,255,0), (x,y), 3) i += 1 pygame.display.flip()