# Filename: A01_game_loop_and_events.py # Written by: James D. Miller import sys, os import pygame # PyGame Constants from pygame.locals import * from pygame.color import THECOLORS # Initialize the Pygame environment. pygame.init() # Create a display surface to write to. display_surface = pygame.display.set_mode((600,400)) # Instantiate a clock to help control the framerate. myclock = pygame.time.Clock() # Set the intial color of the whole pygame window. display_surface.fill(THECOLORS["white"]) # Initialize some variables. framerate_limit = 120 time_s = 0.0 key_e = "U" key_f = "U" user_done = False mouse_button_UD = "U" while not user_done: dt_s = float(myclock.tick( framerate_limit) * 1e-3) #myclock.tick(framerate_limit) #===================================================== # Get user input #===================================================== # loop through the list of events in the event queue. for event in pygame.event.get(): # This main "if" structure checks the event type of each event. # Depending on the event type (QUIT, KEYDOWN, KEYUP, MOUSEBUTTONDOWN, or # MOUSEBUTTONUP), addition checks are made to identify the characteristics of the # event. if (event.type == pygame.QUIT): user_done = True elif (event.type == pygame.KEYDOWN): if (event.key == K_ESCAPE): user_done = True elif (event.key==K_e): key_e = 'D' elif (event.key==K_f): key_f = 'D' elif (event.type == pygame.KEYUP): if (event.key==K_e): key_e = 'U' elif (event.key==K_f): key_f = 'U' elif (event.type == pygame.MOUSEBUTTONDOWN): mouse_button_UD = 'D' # The get_pressed method returns T/F values in a tuple. (button1, button2, button3) = pygame.mouse.get_pressed() if button1: mouse_button = 1 elif button2: mouse_button = 2 elif button3: mouse_button = 3 else: mouse_button = 0 elif (event.type == pygame.MOUSEBUTTONUP): mouse_button_UD = 'U' # Get the cursor position: x,y. Return this as a tuple. mouse_xy = pygame.mouse.get_pos() #===================================================== # End of user input collection #===================================================== # Erase the screen if the "d" key is pressed. Do this by filling the entire # screen with grey color. if (key_e == 'D'): display_surface.fill(THECOLORS["grey"]) # Determine the color for the circle based on if a mouse button is up (U) or down (D). if ((mouse_button_UD == 'D') and (mouse_button == 1)): circle_color = THECOLORS["yellow"] elif ((mouse_button_UD == 'D') and (mouse_button == 3)): circle_color = THECOLORS["red"] else: circle_color = THECOLORS["blue"] # Draw the circle pygame.draw.circle(display_surface, circle_color, mouse_xy, 10, 0) # Add the incremental time to our time variable. time_s += dt_s # Print to the command window. print time_s, dt_s, myclock.get_fps() # If the "f" key is up (not Down), update the entire display window. if (key_f != 'D'): pygame.display.flip()