Ở trong 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 7 trên 35.
Giữ phím Right đủ lâu thì hình vuông sẽ rời khỏi cửa sổ. Để giữ nó trong cửa sổ, hãy giới hạn x và y sau khi di chuyển chúng.
min(a, b) trả về số nhỏ hơn, còn max(a, b) trả về số lớn hơn. Kết hợp lại, chúng giữ một số trong khoảng giữa hai giới hạn:
x = max(0, min(x, 480 - 40))min(x, 440) ngăn x vượt quá 440, còn max(0, ...) ngăn nó nhỏ hơn 0. Tại sao lại là 440 chứ không phải 480? x là cạnh trái của hình vuông, nên cạnh phải nằm ở x + 40. Khi x bằng 440, cạnh phải chạm mép cửa sổ.
Điều tương tự cũng áp dụng cho y, với chiều cao của cửa sổ.
Thử thách
DễGiữ hình vuông bên trong cửa sổ có kích thước 480 x 360.
- Sau bốn phép kiểm tra phím mũi tên, trước lệnh tô màu, giới hạn
xtrong khoảng từ 0 đến 440. - Giới hạn
ytrong khoảng từ 0 đến 320.
Nhấn Chơi và giữ một phím mũi tên: hình vuông sẽ dừng ở mép. 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("Move the Square")
clock = pygame.time.Clock()
x, y = 220, 160
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
speed = 4
if keys[pygame.K_SPACE]:
speed = 8
if keys[pygame.K_LEFT]:
x -= speed
if keys[pygame.K_RIGHT]:
x += speed
if keys[pygame.K_UP]:
y -= speed
if keys[pygame.K_DOWN]:
y += speed
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tất cả bài học trong Vòng lặp trò chơi
1Di chuyển hình vuông
Mở cửa sổTô nền4Di chuyển theo thời gian
Thời gian deltaPixel mỗi giâyVector2Gia tốc và ma sátDi chuyển vòng quanh màn hìnhTự luyện tập: Playground Pygame