Menu
CoddyTech

Ở 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ổ.

challenge icon

Thử thách

Dễ

Giữ hình vuông bên trong cửa sổ có kích thước 480 x 360.

  1. 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 x trong khoảng từ 0 đến 440.
  2. Giới hạn y trong 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

Tự luyện tập: Playground Pygame