Python – Moving an object in PyGame

Pygame is a cross-platform set of Python modules designed for writing video games. It includes computer graphics and sound libraries designed to be used with the Python programming language. Now, it’s up to the imagination or necessity of developer, what type of game he/she wants to develop using this toolkit.

In this tutorial, we are going to learn how to move an object such that it moves horizontally when pressing the right arrow key or left arrow key on the keyboard and it moves vertically when pressing up arrow key or down arrow key.

The main concept of doing this is by changing the co-ordinates of the object and refreshing the screen. When the screen refreshes every time window color gets filled with original color and the new rectangle is formed, so when arrow keys get pressed co-ordinates changes and it appears that the object is moving.

Change in Co-ordinates for respective keys pressed :

Left arrow key: Decrement in x co-ordinate
Right arrow key: Increment in x co-ordinate
Up arrow key: Decrement in y co-ordinate
Down arrow key: Increment in y co-ordinate

Below is the implementation.





# import pygame module in this program 
import pygame
# activate the pygame library .  
# initiate pygame and give permission  
# to use pygame's functionality.  
# create the display surface object  
# of specific dimension..e(500, 500).  
win = pygame.display.set_mode((500, 500))
# set the pygame window name 
pygame.display.set_caption("Moving rectangle")
# object current co-ordinates 
x = 200
y = 200
# dimensions of the object 
width = 20
height = 20
# velocity / speed of movement
vel = 10
# Indicates pygame is running
run = True
# infinite loop 
while run:
    # creates time delay of 10ms 
    # iterate over the list of Event objects  
    # that was returned by pygame.event.get() method.  
    for event in pygame.event.get():
        # if event object type is QUIT  
        # then quitting the pygame  
        # and program both.  
        if event.type == pygame.QUIT:
            # it will make exit the while loop 
            run = False
    # stores keys pressed 
    keys = pygame.key.get_pressed()
    # if left arrow key is pressed
    if keys[pygame.K_LEFT] and x>0:
        # decrement in x co-ordinate
        x -= vel
    # if left arrow key is pressed
    if keys[pygame.K_RIGHT] and x<500-width:
        # increment in x co-ordinate
        x += vel
    # if left arrow key is pressed   
    if keys[pygame.K_UP] and y>0:
        # decrement in y co-ordinate
        y -= vel
    # if left arrow key is pressed   
    if keys[pygame.K_DOWN] and y<500-height:
        # increment in y co-ordinate
        y += vel
    # completely fill the surface object  
    # with black colour  
    win.fill((0, 0, 0))
    # drawing object on screen which is rectangle here 
    pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
    # it refreshes the window
# closes the pygame window 


Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :


Please write to us at to report any issue with the above content.