Open In App

Stimulate bouncing game using Pygame

Last Updated : 24 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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.

Python3




import pygame
# initialize pygame
pygame.init()


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

Python3




# 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.

Python3




# 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.

Python3




# 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.

Python3




# 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

Python3




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:

Stimulate bouncing game using Pygame

Game Output



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads