عداد الإطارات
جزء من قسم الكائنات والصور في رحلة 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 الساقين تتحركان بسرعة أكبر.
التحدي
متوسط- قبل الحلقة، عيّن
frame_index = 0وtimer = 0. - في كل إطار، أضف 1 إلى
timer؛ وعندما يصل إلى 10، أعده إلى 0 وانقلframe_indexإلى الإطار التالي، مع الالتفاف باستخدام% len(frames). - ارسم
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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الكائنات والصور
4الكائنات الرسومية والمجموعات
صنف Spriteالمجموعاتالإزالة باستخدام kill()الالتقاط باستخدام spritecollideمجموعة ضد مجموعة2دوّر واقلب وغيّر الحجم
التدوير حول المركزوجّهها في اتجاه الطيرانغيّر حجم الصورةدوّر انطلاقًا من الصورة الأصلية5تصادمات مثالية على مستوى البكسل
المستطيلات تبدو غير منصفةالأقنعةكائنات Sprite مثالية على مستوى البكسلمناطق التصادم الدائرية6التحريك باستخدام أوراق الرسوم المتحركة
قصّ ورقة الرسوم المتحركةعداد الإطاراتالتحريك باستخدام الوقتانفجار لمرة واحدةتدرّب بنفسك: Playground لـ Pygame