How to Handle Keyboard and Mouse Input in Pygame
Handling Keyboard and Mouse Input in Pygame
This guide explains how to use Pygame’s event system to detect and respond to keyboard presses and mouse clicks in your Python games.
Understanding the Event Loop
Every Pygame application requires an event loop to process user input. This loop checks for keyboard and mouse activity and reacts accordingly:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Detecting Keyboard Input
You can check for specific key presses using `KEYDOWN` and `KEYUP` events:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
print("Left arrow pressed")
elif event.key == pygame.K_SPACE:
print("Spacebar pressed")
To check if a key is being held down, use `pygame.key.get_pressed()`:
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
print("Right arrow held down")
Handling Mouse Input
Mouse input is detected with `MOUSEBUTTONDOWN`, `MOUSEBUTTONUP`, and `MOUSEMOTION`:
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
print("Left click")
elif event.button == 3:
print("Right click")
if event.type == pygame.MOUSEMOTION:
print("Mouse moved to", event.pos)
Combining Input for Game Interaction
You can use both keyboard and mouse input to control characters, trigger actions, or interact with menus. For example:
# Move a sprite using arrow keys
if keys[pygame.K_LEFT]:
player_x -= speed
if keys[pygame.K_RIGHT]:
player_x += speed
# Click to shoot
if event.type == pygame.MOUSEBUTTONDOWN:
shoot_projectile(player_x, player_y)
Conclusion
Handling input in Pygame gives players control over your game. With keyboard and mouse events, you can create everything from basic platformers to complex interactive systems.
Also read: Understanding the Pygame Event Loop