Menu
CoddyTech

القفز

جزء من قسم قواعد اللعبة في رحلة Pygame على Coddy. الدرس 24 من 29.

القفزة سرعةٌ إلى الأعلى تسلبها الجاذبية. أعطِ العداء سرعة رأسية، vy. في كل إطار، تضيف الجاذبية 1 إليها ويتحرك العداء بمقدارها:

def update(self):
    self.vy += GRAVITY
    self.rect.y += self.vy
    if self.rect.bottom >= GROUND_Y:
        self.rect.bottom = GROUND_Y
        self.vy = 0

تزداد قيمة y نحو الأسفل، لذا تضبط القفزة vy = -16: يرتفع العداء 15 بكسلًا، ثم 14، ثم 13، ويتباطأ حتى يتوقف على ارتفاع نحو 120 بكسلًا، ثم يسقط بسرعة متزايدة. عندما يصل إلى خط الأرض، يوضع عليه ويتوقف.

لا تقفز إلا من الأرض. من دون هذا الاختبار، ستبدأ كل ضغطة أثناء وجود العداء في الهواء قفزة جديدة، وقد يواصل العداء التسلق إلى ما لا نهاية:

def jump(self):
    if self.rect.bottom == GROUND_Y:
        self.vy = -16

يبني القسم 5 على هذا بإضافة منصات للهبوط عليها.

challenge icon

التحدي

متوسط
  1. أضِف GRAVITY = 1 وself.vy = 0 إلى العَدّاء.
  2. اكتب update() كما هو موضّح، واستدعِ runner.update() في كل إطار، قبل الرسم.
  3. اكتب jump(): vy = -16، فقط عندما يكون العَدّاء على الأرض.
  4. يؤدي الضغط على مفتاح المسافة أو السهم لأعلى إلى استدعاء runner.jump().

جرّب بنفسك

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()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس قواعد اللعبة

تدرّب بنفسك: Playground لـ Pygame