חזרה עם for
חלק מהיחידה Python בחלון משחק במסלול ה-Pygame של Coddy. שיעור 15 מתוך 32.
לולאת for חוזרת על השורות שלה פעם אחת עבור כל ערך שניתן לה:
for i in range(8):
pygame.draw.circle(screen, (255, 255, 255), (40 + i * 80, 80), 5)range(8) נותן את המספרים 0, 1, 2 וכן הלאה עד 7: שמונה מספרים, החל ב־0 ועוצרים לפני 8. הלולאה שומרת כל אחד מהם בתורו ב־i ומריצה את השורות המוזחות. לכן הכוכב הראשון נמצא ב־x 40, הבא ב־120, אחר כך 200, עד 600.
השורות המוזחות הן גוף הלולאה, כמו במקרה של if. השורה הראשונה שאחרי הגוף, שחוזרת להזחה החיצונית, פועלת כשהלולאה מסתיימת.
הלולאה הזאת נמצאת בחלק הציור של לולאת המשחק, ולכן כל שמונת הכוכבים מצוירים מחדש בכל פריים. היא קצרה ומסתיימת מיד, ולכן הפריים עדיין מסתיים בזמן.
i הוא שם נפוץ למשתנה מונה, אבל כל שם מתאים: for n in range(8): סופר באותו אופן.
אתגר
קלהחלף את הכוכב היחיד בלולאת for שעוברת על range(8) ומציירת 8 כוכבים לבנים ברדיוס 5 במיקום (40 + i * 80, 80).
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# הגדירו כאן את הדברים, לפני לולאת המשחק.
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# שנו כאן דברים פעם אחת בכל פריים.
screen.fill((20, 24, 48))
# ציירו כאן, אחרי מילוי המסך.
pygame.draw.circle(screen, (255, 255, 255), (40, 80), 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה Python בחלון משחק
תרגלו בעצמכם: Pygame אונליין