סופרים עם len
חלק מהיחידה Python בחלון משחק במסלול ה-Pygame של Coddy. שיעור 26 מתוך 32.
len(stars) הוא מספר הפריטים שהרשימה מכילה. אורך של רשימה ריקה הוא 0. השתמשו בו כדי להציג ספירה:
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))מחרוזת f יכולה להכיל כל ביטוי בתוך הסוגריים המסולסלים שלה, כולל קריאה לפונקציה.
אפשר להשתמש ב-len גם כדי לקבוע מגבלה. הוסיפו כוכב רק כשיש מקום:
if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
stars.append(event.pos)ברגע שהרשימה מכילה 10 כוכבים, התנאי הוא שקר, ולכן לחיצות לא עושות דבר. הספירה שעל המסך והמגבלה מתייחסות לאותה רשימה, ולכן הן תמיד תואמות.
המגבלה נמצאת בלולאת האירועים, ומחוברת לבדיקת הלחיצה באמצעות and: פעולת ההוספה מתבצעת רק כשהאירוע הוא לחיצה ויש מקום. len פועלת גם על מחרוזות: len("Night") הוא 5.
אתגר
בינוניספרו את הכוכבים ועצרו בעשר:
- בחלק ההגדרה, הגדירו
font = pygame.font.Font(None, 36). - בחלק הציור, הציגו את
f"Stars: {len(stars)}"בצבע(230, 230, 240)במיקום (20, 20). - הוסיפו כוכב בלחיצה רק כל עוד
len(stars) < 10.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# הגדירו כאן את הדברים, לפני לולאת המשחק.
stars = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# שנו כאן דברים פעם אחת בכל פריים.
screen.fill((20, 24, 48))
# ציירו כאן, אחרי המילוי.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה Python בחלון משחק
תרגלו בעצמכם: Pygame אונליין