Hiển thị lượng tuyết rơi bằng Pygame trong Python

Category: Pygame

Không phải ai cũng chứng kiến tận mắt cảnh tuyết rơi nhưng hãy đợi một chút, điều gì sẽ xảy ra nếu bạn có thể nhìn thấy tuyết rơi ngay trên màn hình chỉ bằng một vài dòng sáng tạo và lập trình.

 Trước khi bắt đầu chủ đề, bạn nên xem lại những kiến thức cơ bản về Pygame. 

Các bước tạo tuyết rơi

1. Nhập mô-đun

Đầu tiên, chúng ta cần nhập mô-đun Pygame bằng cách sử dụng lệnh.

import pygame

Ngoài ra, cùng với Pygame, chúng ta cũng cần module random. Python có một module tích hợp mà bạn có thể sử dụng để tạo số ngẫu nhiên chỉ bằng cách import module random.

import random

2. Khởi tạo công cụ trò chơi 

Nó đơn giản có nghĩa là chọn màu bạn muốn sử dụng. Trong thế giới lập trình, bất cứ điều gì bạn nghĩ bạn có thể làm được. Ở cuối bài viết, bạn sẽ thấy tuyết rơi màu xanh lá cây trên nền trắng.

# khởi tạo
pygame.init()

# màu đã chọn sẽ được sử dụng
# để hiển thị kết quả đầu ra
WHITE = [255, 255, 255]
GREEN = [0, 255, 0]

3. Chỉ định kích thước màn hình 

 Đây có thể là một số mới tùy thuộc vào độ phân giải của hệ thống của bạn.

# chỉ định kích thước

SIZE = [400, 400]
screen = pygame.display.set_mode(SIZE)

4. Đặt tên cho màn hình cửa sổ chống tuyết rơi của bạn

Tên được cung cấp có thể được nhìn thấy ở góc trái của cửa sổ đầu ra.

# chú thích cho ca sổ đầu ra

pygame.display.set_caption("Programming World of GFG")

5. Tạo một mảng trống cho lượng tuyết rơi của bạn 

snowFall = []

6. Lặp lại để có được vị trí tuyết rơi

Tạo một vòng lặp và chạy 50 lần rồi thêm một trận tuyết rơi ngẫu nhiên ở vị trí x,y bằng cách sử dụng Mô-đun ngẫu nhiên.

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

7. Theo dõi thời gian

Tạo một đối tượng để giúp theo dõi thời gian

# đối tượng để theo dõi thời gian

clock = pygame.time.Clock()

8. Đặt tiêu chí cho hiện tượng tuyết rơi

 Tuyết sẽ rơi cho đến khi người dùng nhấn nút đóng và để thực hiện điều này bên trong vòng lặp while , hãy sử dụng vòng lặp for .

# lặp lại cho đến khi nút đóng được nhấn
done = False

while not done:

  # Người dùng đã làm gì đó
    for event in pygame.event.get():

       # Nếu người dùng nhấp vào đóng
        if event.type == pygame.QUIT:

          # Đánh dấu rằng chúng ta đã hoàn tất
          # chúng ta thoát khỏi vòng lặp này
            done = True

9. Thiết lập hình nền màn hình:

screen.fill(WHITE)

10. Xử lý tuyết rơi

Bây giờ hãy sử dụng vòng lặp for để xử lý từng Tuyết rơi trong danh sách: 

for i in range(len(snowFall)):

11. Vẽ cảnh tuyết rơi 

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

12. Thêm chuyển động

    # Di chuyển bông tuyết xuống 1 pixel
    snowFall[i][1] += 1

    # Nếu bông tuyết rơi xuống dưới đáy màn hình
    if snowFall[i][1] > 400:
    
        # Đặt lại vị trí ngay phía trên đỉnh màn hình
        y = random.randrange(-50, -10)
        snowFall[i][1] = y
        
        # Gán vị trí x mới ngẫu nhiên
        x = random.randrange(0, 400)
        snowFall[i][0] = x

    # Cập nhật màn hình với những gì đã vẽ
    pygame.display.flip()
    clock.tick(20)
pygame.quit()

Và vâng, tuyết xanh đã bắt đầu rơi!!

Chương trình hoàn chỉnh

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()

Đầu ra

Published on Jul 28, 2025

Related Posts