Кейіпкерлерді анимациялау

Анықтама
Анимация — қозғалыс иллюзиясы: әр кадрда нысанның координатасын аздап өзгертіп, экранды қайта салу. Кадрлар жылдам ауысқанда көз үздіксіз қозғалысты көреді.
x = 100
while running:
    ...
    x += 3                       # әр кадрда 3 пиксель оңға
    screen.blit(fon, (0, 0))
    screen.blit(hero, (x, 200))
    pygame.display.update()
Анықтама
Жылдамдық — бір кадрдағы жылжу шамасы (пикселмен): x += speed. Таңбасы бағытты береді: оң — оңға/төмен, теріс — солға/жоғары.
Анықтама
FPS (frames per second) — секундтағы кадр саны. clock = pygame.time.Clock() және циклде clock.tick(60) — ойынды 60 кадр/сек жылдамдықпен шектейді, әйтпесе әр компьютерде әртүрлі жылдамдықпен жүреді.
clock = pygame.time.Clock()
while running:
    clock.tick(60)     # секундына 60 кадрдан асырма
    ...
Анықтама
Шекарадан серпілу — координат шетке жеткенде жылдамдықтың таңбасын ауыстыру: if x <= 0 or x >= 750: speed = -speed. Доп «қабырғадан» секіреді.
# Секіретін доп
x, speed = 100, 5
while running:
    clock.tick(60)
    x += speed
    if x <= 0 or x >= 750:
        speed = -speed        # бағытты аудару
    ...

Кадрлық анимация — жүру эффектісі үшін бірнеше суретті кезектестіру: суреттер тізімге жиналып (4-бөлім!), кезекпен көрсетіледі: kadrlar[nomer % len(kadrlar)].

Деңгей: Оңай

Неше кадрда жетеді?

Берілді: Кейіпкер x = 100-ден басталып, әр кадрда x += 4. Мақсат — x = 300.
Табу керек: Неше кадр қажет?
Шешуі:
Жол: 300 − 100 = 200 пиксель. Кадр саны: 200 / 4 = 50.
Жауабы: 50 кадр (60 FPS-те — бір секундтан аз).
Деңгей: Орта

clock.tick не үшін?

Берілді: clock.tick(60) жазылмаған ойын әлсіз ноутбукте баяу, қуатты компьютерде «ұшып» жүреді.
Табу керек: Себебі мен шешімі.
Шешуі:
Шектеусіз цикл әр компьютерде өз жылдамдығымен айналады: кадр көп = қозғалыс жылдам. clock.tick(60) барлық компьютерде 60 FPS-ке теңестіреді.
Жауабы: clock.tick(60) қосу — ойын жылдамдығы құрылғыға тәуелсіз болады.