Springen
Teil des Abschnitts Spielregeln der Pygame-Journey von Coddy. Lektion 24 von 29.
Ein Sprung ist eine Aufwärtsgeschwindigkeit, die durch die Schwerkraft abgebaut wird. Gib dem Läufer eine vertikale Geschwindigkeit, vy. In jedem Frame addiert die Schwerkraft 1 dazu, und der Läufer bewegt sich entsprechend:
def update(self):
self.vy += GRAVITY
self.rect.y += self.vy
if self.rect.bottom >= GROUND_Y:
self.rect.bottom = GROUND_Y
self.vy = 0y wächst nach unten, deshalb setzt ein Sprung vy = -16: Der Läufer steigt erst 15 Pixel, dann 14, dann 13, wird langsamer, bis er etwa 120 Pixel weiter oben zum Stillstand kommt, und fällt immer schneller zurück. Wenn er die Bodenlinie erreicht, wird er darauf gesetzt und bleibt stehen.
Springe nur vom Boden aus. Ohne diese Prüfung würde jeder Tastendruck in der Luft einen neuen Sprung auslösen, und der Läufer könnte endlos nach oben klettern:
def jump(self):
if self.rect.bottom == GROUND_Y:
self.vy = -16Abschnitt 5 baut darauf mit Plattformen zum Landen auf.
Aufgabe
Mittel- Füge dem Läufer
GRAVITY = 1undself.vy = 0hinzu. - Schreibe
update()wie gezeigt und ruferunner.update()in jedem Frame vor dem Zeichnen auf. - Schreibe
jump():vy = -16, aber nur, wenn der Läufer auf dem Boden ist. - Die Leertaste oder die Pfeiltaste nach oben ruft
runner.jump()auf.
Probier es selbst
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
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))
runner = Runner()
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))
screen.blit(runner.image, runner.rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Spielregeln
Übe selbstständig: Pygame-Playground