Open In App

Stimulate bouncing game using Pygame

In this article, we will learn to make a bouncing game using Pygame. Pygame is a set of Python modules designed for writing video games. It adds functionality on top of the excellent SDL library. This allows you to create fully featured games and multimedia programs in the Python language. It is free and runs on nearly every platform and operating system. To install Pygame we will use pip. 

Required Module



Open the terminal and type the following command:

pip install pygame

Steps to Create the Bouncing Game using Pygame

Step 1: Import Pygame and initialize it.






import pygame
# initialize pygame
pygame.init()

Step 2:  Define the width and height of the window and create a game window.




# define width of screen
width = 1000
# define height of screen
height = 600
screen_res = (width, height)
 
pygame.display.set_caption("GFG Bouncing game")
screen = pygame.display.set_mode(screen_res)

Step 3:  Define colors in RGB format. We will use these colors in our game.




# define colors
red = (255, 0, 0)
black = (0, 0, 0)

Step 4: Define the ball and the speed by which it will move

This ball object will be used to move the ball in our game, and it will be used to get new coordinates of the ball and we will use these coordinates to draw the ball. Speed has 2 things, speed in the x direction and speed in the y direction. when speed in the x direction and speed in the y direction is equal in magnitude, then the ball will move in a diagonal way. Initially center of the ball is (100,100)  and the speed is (1,1). Now after 1 unit of time, the center of the ball will be (101,101) and again after 1 unit of time, the center of the ball will be (102,102). In this way, our ball will move.




# define ball
ball_obj = pygame.draw.circle(
    surface=screen, color=red, center=[100, 100], radius=40)
# define speed of ball
# speed = [X direction speed, Y direction speed]
speed = [1, 1]

Step 5: Define the game loop.

  1. Firstly we create an event loop, to get events from the queue.
  2. Then we check if a user wants to exit the game or not.
  3. Then we fill black color on the screen.
  4. Then we will move the ball with a specified speed, and update our ball(Rect) object.
  5. If our ball goes out of the screen in the horizontal direction, then we will change the direction of motion on the X-axis.
  6. And If our ball goes out of the screen in the vertical direction, then we will change the direction of motion on the Y-axis.
  7. Finally, we will draw our ball with the center as the center of the ball(Rect) object.
  8. In last we will update our screen.




# game loop
while True:
    # event loop
    for event in pygame.event.get():
        # check if a user wants to exit the game or not
        if event.type == pygame.QUIT:
            exit()
 
    # fill black color on screen
    screen.fill(black)
 
    # move the ball
    # Let center of the ball is (100,100)  and the speed is (1,1)
    ball_obj = ball_obj.move(speed)
    # Now center of the ball is (101,101)
    # In this way our wall will move
 
    # if ball goes out of screen then change direction of movement
    if ball_obj.left <= 0 or ball_obj.right >= width:
        speed[0] = -speed[0]
    if ball_obj.top <= 0 or ball_obj.bottom >= height:
        speed[1] = -speed[1]
 
    # draw ball at new centers that are obtained after moving ball_obj
    pygame.draw.circle(surface=screen, color=red,
                       center=ball_obj.center, radius=40)
 
    # update screen
    pygame.display.flip()

Complete Code




import pygame
# initialize pygame
pygame.init()
 
# define width of screen
width = 1000
# define height of screen
height = 600
screen_res = (width, height)
 
pygame.display.set_caption("GFG Bouncing game")
screen = pygame.display.set_mode(screen_res)
 
# define colors
red = (255, 0, 0)
black = (0, 0, 0)
 
# define ball
ball_obj = pygame.draw.circle(
    surface=screen, color=red, center=[100, 100], radius=40)
# define speed of ball
# speed = [X direction speed, Y direction speed]
speed = [1, 1]
 
# game loop
while True:
    # event loop
    for event in pygame.event.get():
        # check if a user wants to exit the game or not
        if event.type == pygame.QUIT:
            exit()
 
    # fill black color on screen
    screen.fill(black)
 
    # move the ball
    # Let center of the ball is (100,100)  and the speed is (1,1)
    ball_obj = ball_obj.move(speed)
    # Now center of the ball is (101,101)
    # In this way our wall will move
 
    # if ball goes out of screen then change direction of movement
    if ball_obj.left <= 0 or ball_obj.right >= width:
        speed[0] = -speed[0]
    if ball_obj.top <= 0 or ball_obj.bottom >= height:
        speed[1] = -speed[1]
 
    # draw ball at new centers that are obtained after moving ball_obj
    pygame.draw.circle(surface=screen, color=red,
                       center=ball_obj.center, radius=40)
 
    # update screen
    pygame.display.flip()

Output:

Game Output


Article Tags :