Menu
CoddyTech

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

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

Tự luyện tập: Playground Pygame