Đế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 + 1Bá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.
Thử thách
Trung bìnhThay vòng tròn đơn bằng các vòng tròn được vẽ bằng vòng lặp while.
- Bắt đầu với
radius = 200vàrings = 0. - 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 đó đặtradius = radius // 2và tăngringsthêm 1. - 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()
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
1Cửa sổ đầu tiên
Chương trình đầu tiên của bạnIn ra một thông điệpIn ra một sốMàu sắc dưới dạng sốVẽ mặt trăng4Vòng lặp để vẽ
Lặp lại với forBắt đầu, kết thúc và bướcSử dụng biến vòng lặpVòng lặp lồng nhauĐếm bằng whileTự luyện tập: Playground Pygame