Ở lại trong màn hình
Bài học 7 trên 41 trong khóa học Tạo trò chơi với Pygame của Coddy.
Giữ phím Right đủ lâu, hình vuông sẽ đi ra khỏi cửa sổ. Để giữ nó bên trong, hãy giới hạn x và y sau khi thay đổi 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ố nằm 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 tại x + 40. Khi x bằng 440, cạnh phải chạm mép cửa sổ.
Với y cũng tương tự, nhưng dùng 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 lần 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 Tạo trò chơi với Pygame
1Vòng lặp trò chơi
Mở cửa sổTô màu nềnTự luyện tập: Playground Pygame