Zıplama
Coddy'nin Pygame Journey'sinin Oyun Kuralları bölümünün bir parçası. Ders 24 / 29.
Bir sıçrama, yerçekiminin azalttığı yukarı yönlü bir hızdır. Koşucuya dikey bir hız verin: vy. Her karede yerçekimi bu hıza 1 ekler ve koşucu bu hız kadar hareket eder:
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 aşağı doğru büyür, bu nedenle sıçrama vy = -16 değerini ayarlar: koşucu 15 piksel, ardından 14, sonra 13 piksel yükselir; yaklaşık 120 piksel yükseldikten sonra yavaşlayıp durur ve giderek hızlanarak geri düşer. Zemin çizgisine ulaştığında bu çizgiye yerleştirilir ve durur.
Yalnızca yerdeyken sıçrayın. Bu kontrol olmadan havadayken yapılan her basış yeni bir sıçrama başlatır ve koşucu sonsuza kadar yükselebilir:
def jump(self):
if self.rect.bottom == GROUND_Y:
self.vy = -165. Bölüm, üzerine inilebilecek platformlar ekleyerek bunu geliştirir.
Görev
Orta- Koşucuya
GRAVITY = 1veself.vy = 0ekle. - Gösterildiği gibi
update()yaz ve her karede, çizimden öncerunner.update()çağır. jump()yaz: yalnızca koşucu yerdeykenvy = -16.- Boşluk veya Yukarı tuşu
runner.jump()çağırır.
Kendin dene
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()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Oyun Kuralları bölümündeki tüm dersler
Kendi başına pratik yap: Pygame playground