Vòng lặp lồng nhau
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 19 trên 33.
Phần thân của một vòng lặp có thể chứa một vòng lặp khác. Vòng lặp bên trong chạy hết một lượt mỗi khi vòng lặp bên ngoài lặp:
for row in range(4):
for col in range(8):
x = 130 + col * 50
y = 210 + row * 60
pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))Khi row là 0, vòng lặp bên trong vẽ 8 cửa sổ dọc theo hàng trên cùng. Sau đó, row trở thành 1 và vòng lặp bên trong vẽ thêm 8 cửa sổ, thấp hơn 60 pixel. Bốn hàng, mỗi hàng tám cửa sổ, tạo thành 32 cửa sổ. Lưới luôn có hình dạng này: một vòng lặp cho các hàng, một vòng lặp cho các cột.
pygame.draw.rect(screen, colour, (x, y, width, height)) vẽ một hình chữ nhật tô kín, có góc trên bên trái tại (x, y).
Hãy chú ý thụt lề: for bên trong được thụt lề dưới vòng lặp bên ngoài, phần thân của nó lại được thụt lề thêm, cách vòng lặp bên ngoài 8 dấu cách.
Thử thách
Trung bìnhThắp sáng toàn bộ tòa nhà: 4 hàng, mỗi hàng có 8 cửa sổ.
- Bọc vòng lặp cửa sổ trong
for row in range(4):. - Đặt
y = 210 + row * 60để các hàng nằm ở y 210, 270, 330 và 390.
Nhấn “Chơi”: 32 cửa sổ sá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 sau mỗi khung hình.
screen.fill((20, 24, 48))
# Vẽ ở đây, sau khi tô nền.
pygame.draw.rect(screen, (40, 44, 70), (100, 180, 440, 300))
for col in range(8):
x = 130 + col * 50
y = 210
pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))
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