العد باستخدام 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 في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame