Menu
CoddyTech

Di chuyển vòng quanh màn hình

Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 25 trên 35.

Trong nhiều trò chơi không gian, tàu hoặc tảng đá rời khỏi một mép màn hình sẽ xuất hiện lại ở mép đối diện. Đây là hiện tượng cuộn vòng. Tảng đá ở đây trôi lên trên và sang phải, rồi biến mất hẳn sau vài giây.

Kiểm tra từng mép sau khi di chuyển. Bán kính của tảng đá là 20, vì vậy hãy để nó khuất hẳn khỏi màn hình rồi mới cho nó nhảy: khi vượt quá 480 + 20 ở bên phải, nó xuất hiện lại tại -20, khuất khỏi tầm nhìn ở phía bên kia mép trái, rồi trượt vào màn hình.

if pos.x > 500:
    pos.x = -20
if pos.x < -20:
    pos.x = 500

Chiều y cũng hoạt động tương tự, dựa trên chiều cao: khi vượt quá 380 ở phía dưới, nó xuất hiện lại tại -20, còn khi vượt lên trên -20, nó xuất hiện lại tại 380.

Chỉ vị trí nhảy sang chỗ khác. Vận tốc vẫn giữ nguyên, nên tảng đá tiếp tục trôi theo hướng cũ sau khi cuộn vòng.

challenge icon

Thử thách

Dễ

Cho hòn đá vòng lại ở mép cửa sổ, sau pos += vel * dt.

  1. Khi vượt quá 500, pos.x trở thành -20; khi nhỏ hơn -20, nó trở thành 500.
  2. Khi vượt quá 380, pos.y trở thành -20; khi nhỏ hơn -20, nó trở thành 380.

Nhấn “Chơi”: hòn đá rời khỏi một cạnh rồi quay lại ở cạnh đối diện. Sau đó nhấn “Kiểm tra”.

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Drifting Rock")
clock = pygame.time.Clock()

pos = pygame.Vector2(240, 180)
vel = pygame.Vector2(120, -70)
dt = 0

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

    pos += vel * dt

    screen.fill((20, 20, 34))
    pygame.draw.circle(screen, (150, 150, 160), pos, 20)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

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 Vòng lặp trò chơi

Tự luyện tập: Playground Pygame