Menu
CoddyTech

عداد الإطارات

جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 26 من 36.

تمشي الشخصية عبر النافذة، لكن ساقيها لا تتحركان أبدًا: فهي تعرض دائمًا frames[0]. سيؤدي عرض الإطار الآخر في كل مرة إلى وميض 60 مرة في الثانية، وهذا أسرع بكثير مما يناسب حركة الساقين. اعرض كل صورة لعدة إطارات بدلًا من ذلك، باستخدام عدّاد:

timer += 1
if timer == 10:
    timer = 0
    frame_index = (frame_index + 1) % len(frames)

يعدّ timer الإطارات. كل 10 إطارات، يبدأ من جديد عند 0 ويتقدم frame_index إلى الصورة التالية. تعيده % len(frames) إلى 0 بعد الإطار الأخير، لذا تتكرر حركة المشي إلى الأبد، مهما كان عدد الإطارات في القائمة.

ارسم frames[frame_index]. عند 60 إطارًا في الثانية، تظهر كل وضعية لمدة سدس الثانية: مشية هادئة. يجعل العدد الأصغر من 10 الساقين تتحركان بسرعة أكبر.

challenge icon

التحدي

متوسط
  1. قبل الحلقة، عيّن frame_index = 0 وtimer = 0.
  2. في كل إطار، أضف 1 إلى timer؛ وعندما يصل إلى 10، أعده إلى 0 وانقل frame_index إلى الإطار التالي، مع الالتفاف باستخدام % len(frames).
  3. ارسم frames[frame_index] عند (x, 300).

جرّب بنفسك

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Walk Cycle")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))
x = 0

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

    x += 2
    if x > 640:
        x = -72

    screen.fill((20, 22, 40))
    screen.blit(frames[0], (x, 300))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconاختبر نفسك

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

جميع دروس الكائنات والصور

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