Lặp lại với for
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 16 trên 33.
Vòng lặp for lặp lại các dòng lệnh trong thân vòng lặp một lần cho mỗi giá trị được cung cấp:
for i in range(8):
pygame.draw.circle(screen, (255, 255, 255), (40 + i * 80, 80), 5)range(8) tạo ra các số 0, 1, 2 và tiếp tục như vậy đến 7: tám số, bắt đầu từ 0 và dừng trước 8. Vòng lặp lần lượt lưu từng số vào i rồi chạy các dòng được thụt lề. Vì vậy, ngôi sao đầu tiên nằm ở x 40, ngôi sao tiếp theo ở 120, rồi đến 200, cho đến 600.
Các dòng được thụt lề là thân vòng lặp, giống như với if. Dòng đầu tiên sau thân vòng lặp, trở lại mức thụt lề bên ngoài, sẽ chạy khi vòng lặp kết thúc.
Vòng lặp này nằm trong phần vẽ của vòng lặp trò chơi, vì vậy cả tám ngôi sao đều được vẽ lại ở mỗi khung hình. Vòng lặp ngắn và kết thúc ngay, nên khung hình vẫn kết thúc đúng lúc.
i là tên thường dùng cho biến đếm, nhưng bạn có thể dùng tên bất kỳ: for n in range(8): cũng đếm giống như vậy.
Thử thách
DễVẽ một hàng gồm tám ngôi sao bằng vòng lặp.
- Thay ngôi sao đơn bằng
for i in range(8):. - Trong vòng lặp, vẽ một ngôi sao màu trắng bán kính 5 tại
(40 + i * 80, 80).
Nhấn “Chơi”: tám ngôi sao trên một hàng. 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 (loop) của trò chơi.
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ô nền.
pygame.draw.circle(screen, (255, 255, 255), (40, 80), 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
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