Skip to content
Related Articles

Related Articles

Improve Article
Snowfall display using Pygame in Python
  • Difficulty Level : Hard
  • Last Updated : 01 Oct, 2020

Not everybody must have witnessed Snowfall personally but wait a minute, What if you can see the snowfall right on your screen by just a few lines of creativity and Programming.

 Before starting the topic, it is highly recommended revising the basics of Pygame. 

Steps for snowfall creation

1. Importing modules

First, we need to import the Pygame module by using the command.

import pygame
 



Also, along with Pygame, we will also need random module. Python has a built-in module that you can use to make random numbers just by importing random module.

import random
 

2. Initialize the game engine 

It simply means choose the colors you want to use. In programming World, Whatever you can think you can make. At the end of the article , you will find green snowfall on the white background.

Python3




# initialize
pygame.init()
  
# choosen colours will be used
# to display the output
WHITE = [255, 255, 255]
GREEN = [0, 255, 0]

3.  Specify the size of the screen 

 It can be a new number depending upon the resolution of your system.

Python3






# specify the size
  
SIZE = [400, 400]
screen = pygame.display.set_mode(SIZE)

4. Assign a name to your snowfall window screen

The name given can be seen on the left corner of the output window.

Python3




# caption for output window
  
pygame.display.set_caption("Programming World of GFG")

5. Create an empty array for your snowfall 

Python3




snowFall = []

6. Looping to get snowfall positions

 Make a loop and run to 50 times and add a snowfall in a random x,y position using random Module.

Python3




for i in range(50):
    x = random.randrange(0, 400)
    y = random.randrange(0, 400)
    snowFall.append([x, y])

7. Track time

Create an object to help track time



Python3




# object to track time
  
clock = pygame.time.Clock()

8. Set criteria for snowfall occurrence

 Snowfall should occur until the user presses the close button and for this inside while loop, use a for loop.

Python3




# loop till the close button is pressed
done = False
  
while not done:
  
  # User did something
    for event in pygame.event.get():
  
       # If user clicked close
        if event.type == pygame.QUIT:
  
          # Flag that we are done so
          # we exit this loop
            done = True

9. Set the screen background :

Python3




screen.fill(WHITE)

10. Process the snowfall

Now use a for loop to process each Snowfall in the list :

Python3




for i in range(len(snowFall)):

11. Draw the snowfall 



Python3




pygame.draw.circle(screen, GREEN, snowFall[i], 2)

      

12. Adding movement

Python3




# Move the snowFall down one pixel
        snowFall[i][1] += 1
  
        # If the snowFall has moved off the bottom of the screen
        if snowFall[i][1] > 400:
          
            # Reset it just above the top
            y = random.randrange(-50, -10)
            snowFall[i][1] = y
              
            # Give it a new x position
            x = random.randrange(0, 400)
            snowFall[i][0] = x
  
    # Go ahead and update the screen with what we've drawn.
    pygame.display.flip()
    clock.tick(20)
pygame.quit()

And Yes, Green snowfall has started!!

Complete Program

Python3




import pygame
import random
pygame.init()
  
WHITE = [255, 255, 255]
GREEN  = [0,255,0]
SIZE = [400, 400]
  
screen = pygame.display.set_mode(SIZE)
pygame.display.set_caption("Programming World of GFG")
  
snowFall = []
for i in range(50):
    x = random.randrange(0, 400)
    y = random.randrange(0, 400)
    snowFall.append([x, y])
  
clock = pygame.time.Clock()
done = False
while not done:
  
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:  
            done = True 
    screen.fill(WHITE)
    for i in range(len(snowFall)):
        pygame.draw.circle(screen, GREEN, snowFall[i], 2)
  
        snowFall[i][1] += 1
        if snowFall[i][1] > 400:
            y = random.randrange(-50, -10)
            snowFall[i][1] = y
         
            x = random.randrange(0, 400)
            snowFall[i][0] = x
  
    pygame.display.flip()
    clock.tick(20)
pygame.quit()

Output

 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. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :