Menu
CoddyTech

跑者

本课属于 Coddy Pygame 学习旅程的“游戏规则”单元。第 23 课,共 30 课。

本章将制作 Sky Runner,一款无尽跑酷游戏。跑者待在靠近左侧边缘的位置,障碍物从右侧出现;你要尽可能长时间地跳过它们。天空和地面都会绘制出来。跑者是一个精灵,就像第 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 会将图片底边的中点放在某个位置上。跑者的脚位于图片底部,因此 midbottom=(100, GROUND_Y) 会让它站在地面上,x 坐标为 100,无论它的高度是多少。

GROUND_Y 是地面上边缘的 y 坐标,为 260。所有站在地面上的对象都会用到它,因此之后移动地面时只需修改一处。

challenge icon

挑战

简单

让 Sky Runner 的跑步者站在地面上。

  1. 编写一个 Runner 精灵类,它的图像是 assets/images/player.png,并且它的 rect 的 midbottom 位于 (100, GROUND_Y)。
  2. 在循环之前创建一个,命名为 runner。
  3. 绘制地面后,将 runner.image 绘制到 runner.rect 的位置。

按下“开始”:跑步者会站在左侧的草地上。然后按“检查”。

亲手试试

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()

游戏规则中的所有课

自己练习: Pygame 在线编辑器