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.
Thử thách
DễĐặt nhân vật chạy trong Sky Runner trên mặt đất.
- Viết một lớp sprite
Runnercó hình ảnh làassets/images/player.pngvà có rect vớimidbottomở (100,GROUND_Y). - Tạo một đối tượng tên là
runnertrước vòng lặp. - Blit
runner.imagetạirunner.rectsau 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