Menu
CoddyTech

Người chạy

Thuộc phần Luật chơi trong hành trình Pygame của Coddy. Bài học 23 trên 30.

Chương này xây dựng Sky Runner, một trò chơi chạy bất tận. Nhân vật chạy ở gần mép trái trong khi chướng ngại vật xuất hiện từ bên phải; bạn nhảy qua chúng lâu nhất có thể. Bầu trời và mặt đất được vẽ. Nhân vật chạy là một sprite, như trong phần 3:

class Runner(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("assets/images/player.png").convert_alpha()
        self.rect = self.image.get_rect(midbottom=(100, GROUND_Y))

midbottom đặt điểm giữa của cạnh dưới bức ảnh lên một điểm. Bàn chân của nhân vật chạy nằm ở cạnh dưới bức ảnh, vì vậy midbottom=(100, GROUND_Y) đặt nhân vật đứng trên mặt đất tại x 100, bất kể chiều cao của nhân vật.

GROUND_Y là tọa độ y của cạnh trên mặt đất, bằng 260. Mọi thứ đứng trên mặt đất đều dùng giá trị này, nên sau này bạn chỉ cần thay đổi một chỗ để di chuyển mặt đất.

challenge icon

Thử thách

Dễ

Đặt nhân vật chạy trong Sky Runner trên mặt đất.

  1. Viết một lớp sprite Runner có hình ảnh là assets/images/player.png và có rect với midbottom ở (100, GROUND_Y).
  2. Tạo một đối tượng tên là runner trước vòng lặp.
  3. Blit runner.image tại runner.rect sau khi vẽ mặt đất.

Nhấn Chơi: nhân vật chạy đứng trên bãi cỏ ở bên trái. Sau đó nhấn Kiểm tra.

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 320))
pygame.display.set_caption("Sky Runner")
clock = pygame.time.Clock()

SKY = (140, 200, 240)
GROUND = (90, 160, 80)
GROUND_Y = 260

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

    screen.fill(SKY)
    pygame.draw.rect(screen, GROUND, (0, GROUND_Y, 640, 60))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Tất cả bài học trong Luật chơi

Tự luyện tập: Playground Pygame