Skip to main content

Moving Objects

Hi everyone ! In this post, let us see how to move objects on the game screen. In the previous post, we learnt how to draw objects and fill colors. Now we will see how to move those objects from one place to another.

To move objects in a game, we need some event to occur. Let us make the object move on pressing the arrow buttons.

import pygame
pygame.init()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
display=pygame.display.set_mode((500,500))
game_loop=False
rect_x = 100
rect_y = 100
while not game_loop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_loop = True
        if event.type == pygame.KEYDOWN :
            if event.key == pygame.K_LEFT :
                rect_x -= 10
            if event.key == pygame.K_RIGHT :
                rect_x += 10
            if event.key == pygame.K_UP :
                rect_y -= 10
            if event.key == pygame.K_DOWN :
                rect_y +=10
    display.fill(blue)
    display.fill(black,rect=[rect_x,rect_y,50,50])
    pygame.display.update()
pygame.quit()
quit()

The pygame.event.get() is the events loop where we can write functions to control all the events.
pygame.KEYDOWN is the event type that occurs when a key is pressed down. When it is a keydown event, then we check if what key is pressed. If the user presses the left arrow key, we have to move the rectangle to the left. In the program, we have to reduce the value of x co-ordinate of the rectangle by some unit( 10 here ).pygame.K_LEFT event handles the event when left arrow key is pressed.
Similarly, code is written to handle the keydown events of all the arrow keys.
So when the program is executed, the rectangle moves in the direction corresponding to the arrow key presses by some distance.
The disadvantage of this code is that, when the user presses the key, the rectangle moves by 10 and we have to press the arrow key again to make the rectangle move. The rectangle stops moving, the moment user takes his/her hand off the key, i.e only one keydown event happens even when the user continues to press the key without taking his/her hand off.
In order to handle this, let us introduce a variable x_change and y_change.

import pygame
pygame.init()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
display=pygame.display.set_mode((500,500))
game_loop=False
rect_x = 100
rect_y = 100
x_change = 0
y_change = 0
while not game_loop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_loop = True
        if event.type == pygame.KEYDOWN :
            if event.key == pygame.K_LEFT :
                y_change = 0
                x_change = -10
            if event.key == pygame.K_RIGHT :
                y_change = 0
                x_change = +10
            if event.key == pygame.K_UP :
                x_change = 0
                y_change = -10
            if event.key == pygame.K_DOWN :
                x_change = 0
                y_change = +10
    display.fill(blue)
    rect_x += x_change
    rect_y += y_change
    display.fill(black,rect=[rect_x,rect_y,50,50])
    pygame.display.update()
pygame.quit()
quit()


We also need to add code that controls the frames per second. The game loop runs nearly 1000 times per second, so we need to control the number of frames per second in order to make the movement visible to human eyes. pygame.time.Clock() function is used for this functionality.
So the final code is : 

import pygame
pygame.init()
clock = pygame.time.Clock()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
display=pygame.display.set_mode((500,500))
game_loop=False
rect_x = 100
rect_y = 100
x_change = 0
y_change = 0
while not game_loop:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_loop = True
        if event.type == pygame.KEYDOWN :
            if event.key == pygame.K_LEFT :
                y_change = 0
                x_change = -10
            if event.key == pygame.K_RIGHT :
                y_change = 0
                x_change = +10
            if event.key == pygame.K_UP :
                x_change = 0
                y_change = -10
            if event.key == pygame.K_DOWN :
                x_change = 0
                y_change = +10
    display.fill(blue)
    rect_x += x_change
    rect_y += y_change
    display.fill(black,rect=[rect_x,rect_y,50,50])
    clock.tick(15)
    pygame.display.update()
pygame.quit()
quit()

So we have successfully written a program to move a rectangle on the screen. In the next post, let us see how we can start designing a simple game with all the functionalities.


Comments

Popular posts from this blog

Introducing Pygame

Hello Everyone! Let's get into the most interesting topic. We are going to see how we design games using python programming language, Let me introduce you to ' pygame' . Pygame is an open-source and free python library which is used for creating multimedia applications like games built on the top of an excellent SDL library. Pygame is highly portable and can be run on nearly any platform and operating system. First of all,We need to download the pygame library which can be downloaded from the official Pygame  website. Several versions of pygame compatible for the various versions of python are available. We need to select the appropriate version of pygame for our version of python and download and install it. Here i use Python-2.7. So i downloaded pygame-1.9.1 For using pygame library in a python program, like importing any other module, we must import pygame using the command.               import pygame You can also check if you ...

Introduction to Python

Introduction         Most of us would be very interested in game designing even before knowing what is it about. We get admired by the way the games we play are designed and that becomes the cause for many of us to have the wish to become a game designer. So this is the platform where I am going to share with everyone what I have learned. When it comes to game designing, everyone knows that there is some serious coding stuff done behind and behind every successful game in the market, there would have been coders and designers working very hard for nearly more than 5 years. So we need to learn  programming languages with great interest to get into game designing. Python is a latest language which is more convenient and easy to learn and work with.It is easy to learn it as it has built in capability for many features. We can perform the operations with a single line of code which requires several lines of code to be written in langu...

Drawing shapes And Filling colours

Till now, we have written a python program to open a blank black screen and the QUIT event is handled. In this post, let's see how to add colours to the game surface and draw shapes onto the screen. Filling colours : By default, pygame has no predefined colours. We have to define the colours by giving the RGB(red,green,blue) value of the colour.   import pygame pygame.init() white = (255,255,255) black = (0,0,0) red = (255,0,0) green = (0,255,0) blue = (0,0,255) display=pygame.display.set_mode((500,500)) game_loop=False while not game_loop:     for event in pygame.event.get():         if event.type==pygame.QUIT:             game_loop=True     display.fill(blue)     pygame.display.update() pygame.quit() quit() Here i have defined the basic colours by giving the rgb value of those colors. The values are given as a tuple here. Since white is a mixture o...