מונה פריימים
חלק מהיחידה ספרייטים ותמונות במסלול ה-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, אפסו אותו והעבירו את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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין