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ự.
Thử thách
DễHãy làm cho sao chổi bay sang phải.
- Tìm phần
# Change things here, once a frame.. - Ở đó, 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
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ăng2Số và biến
Đặt tên cho một giá trịThực hiện phép tínhDi chuyển mỗi khung hìnhChữ trên màn hìnhSố nguyên và số thựcTự luyện tập: Playground Pygame