Menu
CoddyTech

Di chuyển mỗi khung hình

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

Vòng lặp trò chơi chạy 60 lần mỗi giây, nên một dòng trong phần "Thay đổi mọi thứ ở đây" chạy một lần mỗi khung hình. Dùng dòng đó để thay đổi một biến một chút mỗi lần:

comet_x = comet_x + 2

Đọc từ bên phải: lấy giá trị trong comet_x, cộng thêm 2 rồi lưu kết quả trở lại comet_x. Nếu giá trị là 40, giờ nó là 42. Ở khung hình tiếp theo, giá trị thành 44, rồi 46.

Sao chổi được vẽ tại comet_x ở mỗi khung hình, vì vậy mỗi khung hình cho thấy nó tiến thêm 2 pixel về bên phải: 120 pixel mỗi giây. Đó là cách mọi thứ di chuyển trong trò chơi: một con số thay đổi một chút ở mỗi khung hình.

comet_x = 40 nằm trong phần thiết lập, nơi dòng này chỉ chạy một lần. Nếu đặt dòng đó bên trong vòng lặp, nó sẽ đưa sao chổi về vị trí 40 ở mỗi khung hình, khiến sao chổi đứng yên.

Python có cách viết ngắn gọn: comet_x += 2 cũng làm điều tương tự.

challenge icon

Thử thách

Dễ

Hãy làm cho sao chổi bay sang phải.

  1. Tìm phần # Change things here, once a frame..
  2. Ở đó, cộng 2 vào comet_x để nó di chuyển 2 pixel mỗi khung hình.

Nhấn "Chơi": sao chổi bay sang phải. 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.
moon_x = 160
moon_y = 120
comet_x = 40
comet_y = 200

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.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
    pygame.draw.circle(screen, (120, 200, 255), (comet_x, comet_y), 8)

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

pygame.quit()

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

Tự luyện tập: Playground Pygame