Menu
CoddyTech

קריאה לפונקציה שוב ושוב

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

קוראים לפונקציה בלולאה, והיא מציירת תבנית. הלולאה מחשבת את הארגומנטים, והפונקציה מבצעת את הציור:

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

בכל איטרציה הכוכב נמצא 70 פיקסלים ימינה ו־45 פיקסלים למטה מהכוכב הקודם, כך שהכוכבים מסתדרים בשורה מ־(60, 60) עד (550, 375). שינוי של 70 או 45 משפיע על כל הכוכבים.

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

נותנים לפונקציה שם שמתאר את הפעולה שהיא מבצעת, לעיתים קרובות עם פועל: draw_star, move_comet, reset_game. כך, שורה שקוראת לה נקראת כמו משפט.

challenge icon

אתגר

קל

ציירו שורה של כוכבים: החליפו את הקריאה היחידה ב-for i in range(8): שקוראת ל-draw_star(60 + i * 70, 60 + i * 45). שמונת הכוכבים משתרעים מ-(60, 60) עד (550, 375).

נסו בעצמכם

import pygame

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

# הגדירו כאן את הדברים, לפני לולאת המשחק.
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

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

    # שנו כאן את הדברים, פעם אחת בכל פריים.

    screen.fill((20, 24, 48))
    # ציירו כאן, אחרי מילוי הרקע.
    draw_star(60, 60)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה Python בחלון משחק

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