Menu
CoddyTech

Gọi hàm nhiều lần

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 24 trên 33.

Gọi một hàm trong vòng lặp sẽ vẽ thành một họa tiết. Vòng lặp tính các đối số, còn hàm thực hiện việc vẽ:

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

Mỗi lần lặp, ngôi sao nằm lệch sang phải 70 pixel và thấp hơn 45 pixel so với ngôi sao trước, nên các ngôi sao tạo thành một đường thẳng từ (60, 60) đến (550, 375). Thay đổi 70 hoặc 45, mọi ngôi sao sẽ dịch chuyển theo.

Đó là lý do bạn nên viết hàm. Các dòng lệnh vẽ một ngôi sao chỉ xuất hiện một lần. Để thay đổi diện mạo của mọi ngôi sao, chẳng hạn như làm các tia dài hơn hoặc đổi màu, bạn chỉ cần sửa phần thân hàm, rồi mỗi lần gọi hàm sẽ vẽ ngôi sao mới.

Đặt tên hàm theo việc nó làm, thường dùng một động từ: draw_star, move_comet, reset_game. Khi đó, dòng lệnh gọi hàm sẽ đọc như một câu.

challenge icon

Thử thách

Dễ

Vẽ một hàng gồm 8 ngôi sao.

  1. Thay lời gọi hàm đơn lẻ bằng for i in range(8):.
  2. Trong vòng lặp, gọi draw_star(60 + i * 70, 60 + i * 45).

Nhấn Chơi: 8 ngôi sao chạy từ (60, 60) đến (550, 375). 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.
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

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

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

    screen.fill((20, 24, 48))
    # Vẽ ở đây, sau khi tô nền.
    draw_star(60, 60)

    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