Menu
CoddyTech

Đếm bằng while

Thuộc phần Python trong cửa sổ trò chơi trong hành trình Pygame của Coddy. Bài học 20 trên 33.

Vòng lặp while lặp lại khi điều kiện còn đúng. Dùng nó khi bạn không biết trước cần lặp bao nhiêu lần:

radius = 200
rings = 0
while radius > 10:
    pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
    radius = radius // 2
    rings = rings + 1

Bán kính giảm một nửa sau mỗi lần: 200, 100, 50, 25, 12. // thực hiện phép chia và bỏ phần sau dấu phẩy, vì vậy 25 // 2 bằng 12. Sau đó, bán kính còn 6, điều kiện không còn đúng và vòng lặp kết thúc sau 5 vòng tròn. rings đếm số vòng tròn. Số thứ năm trong lời gọi hàm vẽ hình tròn là 2, tạo đường viền rộng 2 pixel thay vì hình tròn được tô kín.

Vòng lặp của trò chơi cũng là vòng lặp while, chạy cho đến khi bạn đóng cửa sổ. Vòng lặp while bên trong một khung hình phải kết thúc nhanh, nếu không khung hình sẽ không bao giờ kết thúc. Nếu bỏ dòng giảm một nửa bán kính, điều kiện sẽ luôn đúng: trò chơi bị treo và khi bạn nhấn "Kiểm tra", trò chơi sẽ báo rằng chưa bao giờ chạy đến khung hình đầu tiên.

challenge icon

Thử thách

Trung bình

Thay vòng tròn đơn bằng các vòng tròn được vẽ bằng vòng lặp while.

  1. Bắt đầu với radius = 200 và rings = 0.
  2. Khi radius > 10, hãy vẽ một vòng tròn có màu (150, 190, 255), độ rộng 2, tâm tại (320, 240), sau đó đặt radius = radius // 2 và tăng rings thêm 1.
  3. Sau vòng lặp, hiển thị f"Rings: {rings}" tại (20, 20).

Nhấn Chơi: có năm vòng tròn và Rings: 5. Sau đó nhấn Kiểm tra.

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Thiết lập mọi thứ ở đây, trước vòng lặp trò chơi.
font = pygame.font.Font(None, 36)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Thay đổi mọi thứ ở đây, mỗi khung hình một lần.

    screen.fill((20, 24, 48))
    # Vẽ ở đây, sau khi tô màu nền.
    pygame.draw.circle(screen, (150, 190, 255), (320, 240), 200, 2)
    text = font.render("Rings: 1", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Python trong cửa sổ trò chơi

Tự luyện tập: Playground Pygame