Menu
CoddyTech

זמן דלתא

חלק מהיחידה לולאת המשחק במסלול ה-Pygame של Coddy. שיעור 18 מתוך 32.

clock.tick(60) עושה יותר מאשר להמתין. הוא מחזיר כמה אלפיות השנייה חלפו מאז הקריאה הקודמת שלו: בערך 17 ב־60 פריימים בשנייה, ויותר מכך במחשב איטי שמתקשה לעמוד בקצב. חלקו ב־1000 ותקבלו את dt, משך הפריים בשניות:

dt = 0

while running:
    # אירועים, עדכון, ציור, החלפת תצוגה
    dt = clock.tick(60) / 1000

dt הוא 0 בפריים הראשון, ואחר כך הוא משך הפריים האחרון. חברו את הערכים ותקבלו את הזמן שחלף מאז שהמשחק התחיל:

elapsed += dt

ספירת פריימים, כפי שנעשה ב־Gem Hunt, מודדת את הזמן רק בזמן שהמשחק פועל בקצב מלא של 60 פריימים בשנייה. הזמן שנמדד באמצעות dt מדויק בכל מחשב. בשאר הפרק נזיז דברים לפי זמן.

challenge icon

אתגר

קל

הפתיל נשרף בקצב של פיקסל אחד בכל פריים. גרמו לו להישרף לפי הזמן:

  1. לפני הלולאה, הגדירו elapsed = 0 ו-dt = 0.
  2. החליפו את clock.tick(60) ב-dt = clock.tick(60) / 1000.
  3. בלולאה, הוסיפו את dt ל-elapsed, והגדירו את רוחב הפתיל ל-max(0, 480 - elapsed * 40), כך שהוא יישרף בקצב של 40 פיקסלים בשנייה.

נסו בעצמכם

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Fuse")
clock = pygame.time.Clock()

width = 480

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    width = max(0, width - 1)

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 150, 40), (0, 170, width, 20))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה לולאת המשחק

תרגלו בעצמכם: Pygame אונליין